天天看點

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、菜單欄 的 擴充

按下Enter鍵之後

unity Inspector、菜單欄 的 擴充

菜單欄的擴充

※ ※ ※ [AddComponentMenu] 元件添加菜單中

該标簽聲明在類上面,把類添加到菜單路徑中

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

編輯器中的效果:

unity Inspector、菜單欄 的 擴充
unity Inspector、菜單欄 的 擴充