Unity中GUI、GUILayout、EditorGUI、EditorGUILayout、GUILayoutUtility、EditorGUIUtility区别

Unity中GUI、GUILayout、GUILayoutUtility、EditorGUI、EditorGUILayout、EditorGUIUtility区别

1.解释一下Unity中的编辑器扩展类,分为两组:

  • 在编辑器或者Runtime都能使用,命名空间UnityEngine
    • GUI: ui系统,包括button,lable,toggle等控件
    • GUILayout: 在GUI基础上,控件新增自动布局功能
    • GUILayoutUtility: 对布局类的一些补充,工具类。
  • 只能在编辑器使用,命名空间UnityEditor
    • EditorGUI: 编辑器ui系统,和GUI非常相似,包括button,lable,toggle等控件
    • EditorGUILayout: 在EditorGUI基础上,控件新增自动布局功能
    • EditorGUIUtility: 对EditorGUILayout的一些补充,工具类。

2.GUI和GUILayout的比较

1.使用GUIEditorGUI需要手动设置控件的Rect,位置宽高固定,不能自适应宽高,例如:

GUI.Button(new Rect(0, 0, 100, 100),"btn");
EditorGUI.LabelField(new Rect(0, 0, 100, 100),"label");

2.使用GUILayoutEditorGUILayout生成控件是自动布局,不用设置Rect。例如:

GUILayout.Button("btn");
GUILayout.Label("label");

3.GUI、GUILayout、EditorGUI、EditorGUILayout这4个提供的API非常相似,根据自己需求使用即可,可以混用,建议用Layout自动布局类,如果不满足需求,就使用更加灵活的GUI自行布局。
4.GUILayoutUtility和EditorGUIUtility两个类,是给对应的布局类做补充,里面有一些使用接口可用。

3.介绍几个常用的API

函数名 描述
BeginHorizontal 开始一个水平组并找回其矩形。
BeginScrollView 开始一个自动布局的滚动视图。
BeginVertical 开始一个垂直组并找回其矩形。
IntField 创建一个用于输入整数的文本字段。。
LabelField 生成一个标签字段。(用于显示只读信息。)
PropertyField 为 SerializedProperty 生成一个字段。
EditorGUILayout官方文档 GUILayout官方文档

猜你喜欢

转载自blog.csdn.net/Ling_SevoL_Y/article/details/134058378
今日推荐