Unity 脚本的变量在Inspector面板中如何添加注释,就是鼠标移到一个变量上边时显示提示信息?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 脚本的变量在Inspector面板中如何添加注释,就是鼠标移到一个变量上边时显示提示信息?相关的知识,希望对你有一定的参考价值。

[Tooltip("Set the level for this gameobject.")] //注释
[Range(0,1)] //范围
public float level = 1.0f; //变量

[SerializeField] float m_JumpPower = 12f;
// [HideInInspector]表示将原本显示在面板上的序列化值隐藏起来。
// [SerializeField]表示将原本不会被序列化的私有变量和保护变量可以序列化,显示在面板上
//[System.Serializable]声明class或者struct为序列化数据。它在JS里是隐式实现的,但是在C#需要自己实现。

参考技术A

[Tooltip("12313")]

拓展编辑器(二十)_面板拓展(Inspector面板

  我们的Unity脚本挂在游戏对象上时,右侧会出现它的详细信息面板,这些信息是根据脚本中声明的public可序列化变量而来的。此外,也可以通过EditorGUI来对它进行绘制,让面板更具可操作性。

Inspector面板

  EditorGUI和GUI的用法几乎完全一致,目前来说前者多用于编辑器开发,后者多用于发布后调试编辑器。即他们都是起辅助作用的。EditorGUI提供丰富的组件非常丰富,常用的绘制元素包括文本,按钮,图片和滑动框等。做一个好的编辑器,是离不开EditorGUI的。  

  如图所示,我们将EditorGUI拓展在Inspector面板上了技术分享图片

  实现代码如下所示:

using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif

public class Inspector面板 : 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(Inspector面板))]
public class Inspector面板Editor : Editor
{
    private bool m_EnableToogle;
    public override void OnInspectorGUI()
    {
        //获取脚本对象
        Inspector面板 script = target as Inspector面板;
        //绘制滚动条
        script.scrollPos =
                EditorGUILayout.BeginScrollView(script.scrollPos, false, true);

        script.myName = EditorGUILayout.TextField("text", script.myName);
        script.myId = EditorGUILayout.IntField("text", script.myId);
        script.prefab = EditorGUILayout.ObjectField("GameObject", script.prefab,
            typeof(GameObject), true) as GameObject;


        //绘制按钮
        EditorGUILayout.BeginHorizontal();
        GUILayout.Button("1");
        GUILayout.Button("2");
        script.myEnum = (Inspector面板.MyEnum)EditorGUILayout.EnumPopup("MyEnum:", 
            script.myEnum);
        EditorGUILayout.EndHorizontal();

        //Toogle组件
        m_EnableToogle = EditorGUILayout.BeginToggleGroup("EnableToogle", m_EnableToogle);
        script.toogle1 = EditorGUILayout.Toggle("toogle1", script.toogle1);
        script.toogle2 = EditorGUILayout.Toggle("toogle2", script.toogle2);
        EditorGUILayout.EndToggleGroup();

        EditorGUILayout.EndScrollView();
    }
}
#endif

  在上述代码中,我们将脚本部分和Editor部分的代码合在一个文件中。如果需要拓展的面板比较复杂,建议分成两个文件存放,一个是脚本另外一个是Editor文件。

PS:关于EditorGU类中的方法,可以在Unity的API中查询,也可以参考一下这个:https://www.cnblogs.com/caymanlu/p/5722549.html

 

以上是关于Unity 脚本的变量在Inspector面板中如何添加注释,就是鼠标移到一个变量上边时显示提示信息?的主要内容,如果未能解决你的问题,请参考以下文章

Unity何时调用Inspector初始化

Unity 在Inspector面板,脚本前面的激活对勾

Unity Inspector 面板的某些特性

拓展编辑器(二十)_面板拓展(Inspector面板

讲解怎么在Unity的Inspector面板中用滑动条来控制变量的大小

Unity 脚本中公共变量初始化值修改后,为啥Inpector面板的对应变量属性不更新?