重绘脚本面板

using UnityEditor;
using UnityEngine;
namespace Scripts_03
{
#region 自定义脚本面板
public class ExpandPlane : MonoBehaviour
{
public enum Sex
{
a = 1,
b
}
public string str1;
public string str2;
public Vector3 v3;
public int num1;
public GameObject go;
public bool isTrue;
public Sex sex = Sex.b;
[SerializeField] private Rigidbody rb;
}
#if UNITY_EDITOR
[CustomEditor(typeof(ExpandPlane))]
public class ExpandPlaneDraw : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
ExpandPlane script = (ExpandPlane)target;
script.v3 = EditorGUILayout.BeginScrollView(script.v3, true, true);
GUILayout.Label("========== Vertical 开始绘制 ==========");
EditorGUILayout.BeginVertical();
GUILayout.Label($"str1: {script.str1}");
GUILayout.Label($"str2: {script.str2}");
GUILayout.Label("v3:");
script.v3.x = EditorGUILayout.FloatField("X", script.v3.x);
script.v3.y = EditorGUILayout.FloatField("Y", script.v3.y);
script.v3.z = EditorGUILayout.FloatField("X", script.v3.z);
GUILayout.Label("num1:");
script.num1 = EditorGUILayout.IntField(script.num1);
GUILayout.Label("========== Horizontal 开始绘制 ==========");
EditorGUILayout.BeginHorizontal();
GUILayout.Label("go:");
script.go = (GameObject)EditorGUILayout.ObjectField(script.go, typeof(GameObject), false);
GUILayout.Label("isTrue:");
script.isTrue = EditorGUILayout.Toggle(script.isTrue);
EditorGUILayout.EndHorizontal();
GUILayout.Label("========== Horizontal 结束绘制 ==========");
script.sex = (ExpandPlane.Sex)EditorGUILayout.EnumPopup("sex", script.sex);
if (GUILayout.Button("a"))
script.sex = ExpandPlane.Sex.a;
if (GUILayout.Button("b"))
script.sex = ExpandPlane.Sex.b;
EditorGUILayout.EndVertical();
GUILayout.Label("========== Vertical 结束绘制 ==========");
EditorGUILayout.EndScrollView();
}
}
#endif
#endregion
}
添加并自定义预览面板

[CustomPreview(typeof(GameObject))]
public class ObjPreview : ObjectPreview
{
private GameObject _gameObject;
private Editor _editor;
public override bool HasPreviewGUI()
{
return true;
}
public override void OnPreviewGUI(Rect r, GUIStyle background)
{
GUILayout.Label("Hello GameObject!!!");
var gameObject = (GameObject)EditorGUILayout.ObjectField(_gameObject, typeof(GameObject), true);
if (gameObject != _gameObject)
{
_gameObject = gameObject;
_editor = Editor.CreateEditor(_gameObject);
}
if (_gameObject != null)
_editor.OnPreviewGUI(GUILayoutUtility.GetRect(300, 300), EditorStyles.whiteLabel);
}
}