UnityEditor学习笔记一

Build-in Attribute

十分有用的API:
RequireComponent
Header:添加属性标题
Multilines:多行Text
Space:空行
Tooltip:属性备注

其余:
HelpURL
AddComponentMenu
ContextMenu:允许添加一个命令到该组件上,你可以通过右键或者点击设置图标来调用到它(一般用于函数),且是在非运行状态下执行该函数

自定义 Inspector 面板

Editor + OnInspectorGUI()

OnInspectorGUI主要是用于Editor扩展某一个脚本的Inspector窗口。

布局API

XXHorizontal
XXScrollView
XXToggleGroup
XXVertical
XXFadeGroup

XXField

Field翻译成明显更合适

BoundsField:边界框
ColorField:用于选择颜色,比如Material的选择颜色域
CurveField:制作用于编辑动画的曲线
DealyedXXField:敲击Enter后才显示
Int/FloatField:整数/浮点数
LabelField:制作一个标签(通常用于显示只读信息)
LayerField:返回用户选择的层(就是常见的那个Layer)
PasswordField
PropertyField:制作一个用于SerializedProperty的属性字段(见下)
RectField:矩阵,和Bounds不同,规定了内部的大小
TagField
TextField
EnumFlagsField:枚举
Vector2/3/4Field:向量,通常是坐标值或四元数值
ObjectField

Make an object field. You can assign objects either by drag'n drop objects or by selecting an object using the Object Picker.Ensure that the allowSceneObjects parameter is false if the object reference is stored as part of an asset, since assets can't store references to objects in a scene.If the ObjectField is part of a custom Editor for a script component, use EditorUtility.IsPersistent() to check if the component is on an asset or a scene object.

其他

Popup:弹出选择菜单
Foldout:通常用于创建树或类似的文件夹结构,如果父物体折叠打开,才显示子物体
InspectorTitlebar:制作一个检视面板的标题栏
Slider
MinMaxSlider
SelectableLabel:制作一个可选择标签字段
PrefixLabel:制作一个在某些控件前面的标签
Space:在上一个控件和跟随的控件之间,制作一个小的空距
Toggle
HelpBox:提示框,i/w/e等属性
DropdownButton:制作一个点击后可以下拉内容的按钮

OnSceneGUI 待补充

Lets the Editor handle an event in the scene view.
属于Messages Sent属性

自定义窗口

自定义窗口使用的绝大多数API仍与上面的类似,就是GUI GUILayout EditorGUI EditorGUILayout等等。具体的可以查看官网。

GUI 和 GUILayout 的使用区别就是能否精确控制,后者是自动布局,而前者是自主布局。至于有没有加Editor的区别,主要就是没加的可以操作Scene窗口,而有加的不行;但是两者都可以Advance Editor。对于我这个月要做的项目来说,有涉及到控制Scene界面的功能,需要注意。

EditorWindow + OnGUI()

对于案例里的自定义窗口,主要就是需要继承一个EditorWindow类,这个类可以创建浮动于整个编辑器的窗口。通常搭配的是OnGUI()来进行排版。

ScriptableWizard

另外,有一个比较少见但似乎很好用的,类似EditorWindow的类:ScriptableWizard。介绍如下:

继承自EditorWindow。主要用来做向导。有2个按钮,一个是Create,另一个是Other,有兴趣的朋友可以看参考文章
OnWizardUpdate OnWizardCreate OnWizardOtherButton
优点:有定制功能,并且永远处于最上层显示
如果有EditorWindow想要最上层显示的话,把继承EditorWindow直接换成ScriptableWizard,把 MyWinClass window = (MyWinClass)EditorWindow.GetWindow (typeof(MyWinClass)); 替换为 ScriptableWizard.DisplayWizard<MyWinClass>("Title");
即可。

posted @ 2018-11-26 01:12  Wunsam_Chan  阅读(1342)  评论(0编辑  收藏  举报