当前位置:网站首页>Unity3D——自定义类的Inspector面板的修改

Unity3D——自定义类的Inspector面板的修改

2022-08-11 08:04:00 索利亚噶通

Unity3D——自定义类的Inspector面板的修改

  1. 预期目标: 对自定义类的Inspector面板进行修改,达到如下效果
    自定义类的Inspector面板
  2. 步骤
    (1)创建自己的脚本(例如Help.cs),置于Assets / Scripts目录(非必须)下
    (2)创建与其对应的脚本(HelpInspector.cs), 置于 Assets / Editor 目录(没有可自行创建)下
    (3)在SudentInspector.cs中
    在这里插入图片描述
  • 引用UnityEditor命名空间
  • 添加特性[CutomEditor(typeof(Help))]
  • 继承Editor类
  • 重写OnInspectorGUI类
  1. 注意:这里重写OnInspectorGUI方法时,编译器自带调用父类中的OnInspectorGUI,这里如果不想要Help类中的不需要的public变量出现在Inspector面板上,就将base.OnInspectorGUI()注释掉

  2. 代码

// SudentInspector.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using UnityEditor;

[CustomEditor(typeof(Help))]
public class HelpInspector : Editor
{
    
    public override void OnInspectorGUI()
    {
    
        Help myHelp = (Help)target;        // target就是Help Inspector的实例

        GUILayout.BeginVertical();
        GUILayout.Label("Help Here");
        GUILayout.Label("Version: 1.0.0");        
        GUILayout.EndVertical();

        GUILayout.BeginHorizontal();
        GUILayout.Label("Test Input", GUILayout.Width(60));
        myHelp.helpId = EditorGUILayout.IntField( myHelp.helpId,GUILayout.Width(150));
        GUILayout.EndHorizontal();

        GUILayout.BeginVertical();
        myHelp.helpName = EditorGUILayout.TextField(myHelp.helpName, GUILayout.Width(150));
        GUILayout.EndVertical();
    }
}





// Help.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Help : MonoBehaviour
{
    
    public bool helpHere;
    public int helpId;
    public string helpName;
}

功能
在这里插入图片描述

  1. 注意
  • 这里的target就是指Help创建出来的Help实例(面板),如果想要控制Help中的变量,不能再创建新的实例,因为我们是去操控面板上这个已经创建出来的实例,也就是target
原网站

版权声明
本文为[索利亚噶通]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_40472852/article/details/125926429