TerrainPaintTool<T0>
class in UnityEditor.Experimental.TerrainAPI
/
Inherits from:ScriptableObject
/
Implemented in:UnityEditor
Description 描述
Base class for terrain painting tools.
Derive from this class to implement your own terrain painting tools.
using UnityEngine; using UnityEditor; using UnityEngine.Experimental.TerrainAPI;
namespace UnityEditor.Experimental.TerrainAPI { public class MyPaintHeightTool : TerrainPaintTool<MyPaintHeightTool> { Material m_Material = null; Material GetPaintMaterial() { if (m_Material == null) m_Material = new Material(Shader.Find("Hidden/Terrain/PaintHeight")); return m_Material; }
public override string GetName() { return "My Paint Height Tool"; }
public override string GetDesc() { return "Left click to raise.\n\nHold shift and left click to lower."; }
public override void OnSceneGUI(Terrain terrain, IOnSceneGUI editContext) { TerrainPaintUtilityEditor.ShowDefaultPreviewBrush(terrain, editContext.brushTexture, editContext.brushSize); }
public override bool OnPaint(Terrain terrain, IOnPaint editContext) { Material mat = TerrainPaintUtility.GetBuiltinPaintMaterial();
float rotationDegrees = 0.0f; BrushTransform brushXform = TerrainPaintUtility.CalculateBrushTransform(terrain, editContext.uv, editContext.brushSize, rotationDegrees); PaintContext paintContext = TerrainPaintUtility.BeginPaintHeightmap(terrain, brushXform.GetBrushXYBounds());
// apply brush Vector4 brushParams = new Vector4(editContext.brushStrength * 0.01f, 0.0f, 0.0f, 0.0f); mat.SetTexture("_BrushTex", editContext.brushTexture); mat.SetVector("_BrushParams", brushParams); TerrainPaintUtility.SetupTerrainToolMaterialProperties(paintContext, brushXform, mat);
Graphics.Blit(paintContext.sourceRenderTexture, paintContext.destinationRenderTexture, mat, (int)TerrainPaintUtility.BuiltinPaintMaterialPasses.RaiseLowerHeight);
TerrainPaintUtility.EndPaintHeightmap(paintContext, "Terrain Paint - MyPaintHeightTool"); return false; } } }
Public Methods 公共方法
| GetDesc | Retrieves the description of the custom terrain tool. | ||
| GetName | Retrieves the name of the custom terrain tool. | ||
| OnDisable | Called when the tool is destroyed. | ||
| OnEnable | Called when the tool is created. | ||
| OnEnterToolMode | Called when the tool is activated. | ||
| OnExitToolMode | Called when the tool becomes inactive. | ||
| OnInspectorGUI | Custom terrain tool OnInspectorGUI callback. | ||
| OnPaint | Custom terrain tool paint callback. | ||
| OnSceneGUI | Custom terrain tool OnSceneGUI callback. |
Inherited Members 继承成员
Properties 属性
| hideFlags | Should the object be hidden, saved with the Scene or modifiable by the user? | ||
| name | The name of the object. |
Public Methods 公共方法
| GetInstanceID | Returns the instance id of the object. | ||
| ToString | Returns the name of the object. |
Static Methods 静态方法
| Destroy | Removes a GameObject, component or asset. | ||
| DestroyImmediate | Destroys the object obj immediately. You are strongly recommended to use Destroy instead. | ||
| DontDestroyOnLoad | Do not destroy the target Object when loading a new Scene. | ||
| FindObjectOfType | Returns the first active loaded object of Type type. | ||
| FindObjectsOfType | Returns a list of all active loaded objects of Type type. | ||
| Instantiate | Clones the object original and returns the clone. | ||
| CreateInstance | Creates an instance of a scriptable object. |
Operators 运算符
| bool | Does the object exist? | ||
| operator != | Compares if two objects refer to a different object. | ||
| operator == | Compares two object references to see if they refer to the same object. |