标签:
当我们需要为一个组件添加自己自定义的编辑器内容时,需要用到这个特性:CustomEditor,语法如下:
1、public CustomEditor(Type inspectedType);
2、public CustomEditor(Type inspectedType, bool editorForChildClasses); bool editorForChildClasses可以让我们定义此编辑器内容在子类中是否有效,默认为false;
下面是一个示例代码,效果是在Scene视图的三维空间中为附加了ShowArea脚本组件的GameObject显示一个区域范围。例如,我们在开发游戏时,为一个AI游戏对象添加侦测范围,这样的方式非常直观,也非常有用。
1 using UnityEngine; 2 using System.Collections; 3 4 public class ShowArea : MonoBehaviour 5 { 6 public float radius; 7 }
1 using UnityEngine; 2 using System.Collections; 3 using UnityEditor; 4 5 [CustomEditor(typeof(ShowArea))] 6 public class ShowAreaEditor : Editor 7 { 8 void OnSceneGUI() 9 { 10 ShowArea area = target as ShowArea; 11 12 Handles.color = new Color(0.0f, 0.0f, 1.0f, 0.1f); 13 Handles.DrawSolidDisc(area.transform.position, Vector3.up, area.radius); 14 area.radius = Handles.ScaleValueHandle(area.radius, area.transform.position, Quaternion.identity, 1, Handles.ConeCap, 1); 15 } 16 }
效果如图:
标签:
原文地址:http://www.cnblogs.com/MrX1892/p/4694957.html