目录
将EditorGUI 扩展在 Inspector 面板上
● EditorGUI 和 GUI 的用法几乎完全一致,目前来说前者多用于编辑器开发,后者多用于发布后调试编辑器。总之,它们都是起辅助作用的。 EditorGUI 提供的组件非常丰富,常用的绘制元素包括文本、按钮、图片和滚动框等。做一个好的编辑器,是离不开 EditorGUI 的。如图:我们将 EditorGUI 拓展在 Inspector 面板上了,相关代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
public class Script_03_23 : MonoBehaviour
{
public Vector3 scrollPos;
public int myId;
public string myName;
public GameObject prefab;
public MyEnum myEnum = MyEnum.One;
public bool toogle1;
public bool toogle2;
public enum MyEnum
{
One=1,
Two,
}
#if UNITY_EDITOR
[CustomEditor(typeof(Script_03_23))]
public class ScriptEditor_03_23 : Editor
{
private bool m_EnableToogle;
public override void OnInspectorGUI()
{
//获取脚本对象
Script_03_23 script = target as Script_03_23;
//绘制滚动条
script.scrollPos =
EditorGUILayout.BeginScrollView(script.scrollPos, false, true);
script.myName = EditorGUILayout.TextField("text", script.myName);
script.myId = EditorGUILayout.IntField("int", script.myId);
script.prefab = EditorGUILayout.ObjectField("GameObject", script.prefab,
typeof(GameObject), true) as GameObject;
//绘制按钮
EditorGUILayout.BeginHorizontal();
GUILayout.Button("1");
GUILayout.Button("2");
script.myEnum = (Script_03_2