天天看点

unity Inspector、菜单栏 的 扩展

本文仅供学习记录,如有任何侵权行为立即删除!

Inspector的扩展

※ ※ ※ [Header] 标头属性

在代码中声明:

[Header("名称")]
    public string roleName;//人名
    public string desc;//人物介绍


    [Header("角色属性")]
    public float hp;//血量
    public float mp;//法力值
    public float speed;//移动速度
    public float atk;//攻击力
    public float def;//防御力
           

编辑器中出现的效果:

unity Inspector、菜单栏 的 扩展

※ ※ ※ [Tooltip] 提示信息

在代码中声明:

[Header("名称")]

    [Tooltip("该角色在游戏中的名称")]
    public string roleName;//人名
    [Tooltip("角色的描述信息")]
    public string desc;//人物介绍
    
           

把鼠标长时间放在变量名上 会 出现的效果:

unity Inspector、菜单栏 的 扩展

※ ※ ※ [Space] 添加空行

在代码中声明:

[Header("名称")]
    [Space]

    [Tooltip("该角色在游戏中的名称")]
    public string roleName;//人名
    public string nickName;//昵称

    [Space]

    [Tooltip("角色的描述信息")]
    public string desc;//人物介绍

           

在编辑器Inspecter面板上出现的效果:

unity Inspector、菜单栏 的 扩展

※ ※ ※ [Range()] 规定范围

在代码中声明:

[Header("角色属性")]
    [Space]

    [Range(0,10000)]//hp的取值范围是0~10000
    public float hp;//血量

    public float mp;//法力值

    public float speed;//移动速度

    public float atk;//攻击力

    public float def;//防御力
           

在编辑器Inspecter面板上出现的效果:

unity Inspector、菜单栏 的 扩展

※ ※ ※ [SerializeField] 序列化字段

下面代码中的level字段是私有的。添加此标签可在inspecter面板中显示

[Header("角色属性")]
    [Space]

    [Range(0,10000)]//hp的取值范围是0~10000
    public float hp;//血量
    
    public float mp;//法力值

    public float speed;//移动速度

    public float atk;//攻击力

    public float def;//防御力

    [SerializeField]//序列化字段
    private int level;//等级

           

编辑器中的效果:

unity Inspector、菜单栏 的 扩展

※ ※ ※ [HideInInspector] 隐藏字段

下面代码中的exp字段是公开的。添加此标签可在inspecter面板中隐藏

[Header("角色属性")]
    [Space]

    [Range(0,10000)]//hp的取值范围是0~10000
    public float hp;//血量
    
    public float mp;//法力值

    public float speed;//移动速度

    public float atk;//攻击力

    public float def;//防御力

    [SerializeField]//序列化字段
    private int level;//等级

    [HideInInspector]//隐藏exp字段
    public int exp;//经验
           

编辑器中的效果:

unity Inspector、菜单栏 的 扩展

※ ※ ※ [TextArea] 设置文本区域

在 string 变量上添加此标签,可编辑写入区域的大小

如下代码中在desc变量上添加了此标签后

[Header("名称")]
    [Space]

    [Tooltip("该角色在游戏中的名称")]
    public string roleName;//人名
    [Tooltip("该角色的昵称")]
    public string nickName;//昵称

    [Space]

    [TextArea(0,30)]
    public string desc;//人物介绍

           

在编辑器中的效果

unity Inspector、菜单栏 的 扩展

※ ※ ※ OnValidate() 验证数据的函数(贼实用)

在一个类中声明一些变量,想要对这些变量进行验证的时候可以使用。(之后对类的变量做出修改的才会调用该函数)示例代码如下

public class Role : MonoBehaviour
{
    public List<int> nums;

    public int hp;
    
    private void OnValidate()
    {
        while (nums.Count > 2)
        {
            nums.RemoveAt(nums.Count - 1);
        }

        if (hp > 100) hp = 100;
        if (hp < 0) hp = 0;
    }
}
           

在代码中:规定的nums集合的长度和hp的赋值范围。

在编辑器中改变nums时,他的长度最多为2;给hp赋值时,value如果大于100那么hp就是100,value如果小于0,那么hp就是0.

unity Inspector、菜单栏 的 扩展

按下回车键之后

unity Inspector、菜单栏 的 扩展

菜单栏的扩展

※ ※ ※ [AddComponentMenu] 组件添加菜单中

该标签声明在类上面,把类添加到菜单路径中

[AddComponentMenu("MyScripte/Role")]
public class Role : MonoBehaviour
{
    
}
           

编辑器中的效果:

unity Inspector、菜单栏 的 扩展
unity Inspector、菜单栏 的 扩展