UEDL3-3——对象关联、各类型输入
UEDL3-3——对象关联、各类型输入
本章代码关键字
| 1 | EditorGUILayout.ObjectField() //在编辑器窗口上添加对象关联控件,可以关联一个Unity对象,需要配套一个Object变量 | 
对象关联控件
ObjectField 控件可以让我们关联 Unity 的对象,例如:游戏对象(预设体),材质,音效,继承 MonoBehaviour 的脚本等等
同样,需要一个继承 Unity 的 Object 变量来表示关联了哪个对象,
需要将该变量传入到方法内,再由该变量接收本帧用户关联的对象(需要 as 对应的类型)
该控件可以通过 SerializedProperty 直接修改 MonoBehaviour 脚本对象的属性,使用 SerializedProperty 就不需要配套额外变量
- 参数一:序列化属性 SerializedProperty,可直接修改 MonoBehaviour 脚本对象的属性,使用该参数则无需另外配套变量
- 参数二:文本标题(可选,可改为 GUIContent)
- 参数三:显示关联的对象(传入在外部声明的相应变量)
- 参数四:关联的对象的类型(需要继承自 Unity 的 Object)
- 参数五:是否可以关联场景上的对象资源(例如关联 GameObject 相关,如果该参数为false,则只能关联工程文件夹里的预设体)
- 参数六:GUILayoutOption(使用EditorGUI 绘制时可选)
- 返回值:本帧关联的对象(Unity 的 Object 类型,需要as 成对应类型,如果使用序列化属性就不需要接收了)
| 1 | GameObject obj; | 
显示效果如下: 
各类型输入控件
以下控件可以让我们输入各种类型的值,例如:int、long、float、Vector3、Rect、Bounds等等
同样,需要一个相对应的变量来表示该控件输入的值,
需要将该变量传入到方法内,再由该变量接收本帧用户输入的值
- 参数一:文本标题(可选,可改为GUIContent)
- 参数二:显示输入的值(传入在外部声明的相应变量)
- 参数三:GUIStyle(可选)
- 参数四:GUILayoutOption(使用EditorGUI绘制时可选)
- 返回值:本帧输入的值
一共有如下的输入控件:
- int 变量:EditorGUILayout.IntField("Int输入:", int变量)
- long 变量:EditorGUILayout.LongField("long输入:", long变量)
- float 变量:EditorGUILayout.FloatField("Float输入:", float变量)
- double 变量:EditorGUILayout.DoubleField("double输入:", double变量)
- string 变量:EditorGUILayout.TextField("Text输入:", string变量)
- Vector2 变量:EditorGUILayout.Vector2Field("Vec2输入: ", vector2变量)
- Vector3 变量:EditorGUILayout.Vector3Field("Vec3输入: ", vector3变量)
- Vector4 变量:EditorGUILayout.Vector4Field("Vec4输入: ", vector4变量)
- Rect 变量:EditorGUILayout.RectField("rect输入:", rect变量)
- Bounds 变量:EditorGUILayout.BoundsField("Bounds输入: ", bounds变量)
- BoundsInt 变量:EditorGUILayout.BoundsIntField("Bounds输入: ", boundsInt变量)
Bounds:包围盒,类似于两个Vector3组合,一个是中心点,另一个是范围盒体
| 1 | int i; | 
显示效果如下: 
注意:EditorGUILayout 中还有一些 Delayed 开头的输入控件,
他们和普通输入控件最主要的区别是:在用户按 Enter 键或将焦点从字段移开之前,返回值不会更改
| 1 | int i1, i2; | 
显示效果如下: 
观察显示内容发现,由 EditorGUILayout.DelayedIntField 绘制的控件,在输入值按下回车键或将焦点从字段移开之前,返回值不会更改
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 文KRIFE齐的博客!
