1. 程式人生 > >Unity檢視面板(Inspector)的屬性顯示

Unity檢視面板(Inspector)的屬性顯示

程式碼:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[AddComponentMenu("自己的指令碼/Test_Inspector")]  //只能用在類上,在選單欄Commponent會增加一個 自己的指令碼/Test_Inspector 的選項,
//用於在物體身上新增該指令碼
[RequireComponent(typeof(Rigidbody))]   //在物體新增該指令碼時,會自動新增Rigidbody元件
//typeof()中可以寫自己的指令碼,做到一次新增多個指令碼的效果。
//需要注意的是,在該指令碼還掛在物體上時,不能將typeof()中新增的元件解除安裝
[RequireComponent(typeof(Collider))]
public class Test_Inspector : MonoBehaviour {

    [SerializeField]    //強制去序列化一個private的欄位,也就是說欄位雖然是private的,但還是可以在Inspector面板來調整數值
    private int SerializeField;

    [HideInInspector]   //和上面的正好相反,將public的欄位不在Inspector面板上顯示。
    public int HideInspector;

    [System.NonSerialized]  //同樣的將public的欄位不在Inspector面板上顯示
    public int NonSerialized;

    [Range(1,10)]   //滑動條來控制數值,最大值10,最小值1
    public int range;

    [Tooltip("我就是說明文字")]  //當滑鼠游標停在欄位上時,顯示說明文字
    public string prompt;

    [Space(20)]     //設定欄位上方空間為20,用於設定欄位的間距
    public float space;

    [Header("我是標題")]
    public float title;  //在欄位上方顯示標題

    [Multiline(5)]      //用於顯示多行文字
    public string multiline;

    [TextArea(1,5)]     //設定多行輸入的文字欄位,設定顯示的最大值和最小值
    public string text;

    [System.Serializable]   //只可以對class,struct,enum,delegate進行序列化,不可對屬性序列化。
    private enum Temp
    {
        test01 = 0,
        test02 = 1
    }
}

效果如下: