轉(zhuǎn)載 本文地址:http://fengyu.name/article/310
在Unity中,我們可以很方便的對(duì)Inspector進(jìn)行定制苔埋,有很多簡(jiǎn)單方便的小功能都會(huì)用到。例如給一個(gè)int或float加一個(gè)范圍等枝誊。這些操作不止可以在Editor類(lèi)型的腳本中進(jìn)行顽聂,在普通的MonoBehaviour中也可以做到。這里給大家分享一下在Unity中試驗(yàn)的結(jié)果么伯。
using UnityEngine;
using?System.Collections;
using?UnityEngine.UI;
//在?Add?Component?按鈕中增加一個(gè)菜單項(xiàng)
[AddComponentMenu("Transform/Follow?Transform")]
//在?Create?菜單中疟暖,增加一個(gè)菜單項(xiàng),前提條件是:該腳本繼承自ScriptableObject
[CreateAssetMenu(fileName?=?"New?AttributeTest?File",?menuName?=?"AttributeTest",?order?=1)]
//限制同一個(gè)GameObject只能有一個(gè)該組件(腳本)
[DisallowMultipleComponent]
//編輯器的編輯模式下田柔,在Update俐巴、OnGUI、?OnRenderObject時(shí)會(huì)執(zhí)行
[ExecuteInEditMode]
//自定義組件右上角硬爆?圖標(biāo)的鏈接
[HelpURL("http://fengyu.name/")]
//如果該組件繼承自?MonoBehaviour欣舵,則必須有一個(gè)?BoxCollider?組件同時(shí)存在
[RequireComponent(typeof(BoxCollider))]
//沒(méi)發(fā)現(xiàn)任何改變
[SelectionBase]
//只有在該組件繼承自?StateMachineBehaviour?時(shí)有效,具體作用未知
[SharedBetweenAnimators]
public?class?AttributeTest?:?MonoBehaviour
{
//將一個(gè)字段變?yōu)轭伾瓌t
[ColorUsage(true)]
public?Color?color;
//腳本管理的地方增加一個(gè)菜單
[ContextMenu("Do?Something")]
void?DoSomething()
{
Debug.Log("Perform?operation");
}
//字段名稱(chēng)處缀磕,增加一個(gè)右鍵菜單缘圈。第一個(gè)參數(shù)為菜單名稱(chēng),第二個(gè)參數(shù)為功能的函數(shù)名
[ContextMenuItem("Reset",?"ResetBiography")]
[Multiline(2)]
public?string?playerBiography?=?"";
void?ResetBiography()
{
playerBiography?=?"";
}
//該值虐骑,只有在點(diǎn)擊Enter鍵准验、丟失焦點(diǎn)時(shí)才會(huì)被返回
[Delayed]
public?float?delay;
//沒(méi)有發(fā)現(xiàn)產(chǎn)生的影響
[GUITarget(0,?1)]
void?OnGUI()
{
GUI.Label(new?Rect(10,?10,?300,?100),?"Visible?on?TV?and?Wii?U?GamePad?only");
}
//用于增加一個(gè)標(biāo)題頭
[Header("Header之后的部分")]
public?string?header;
//會(huì)在?Inspector?中隱藏字段
[HideInInspector]
public?string?hide;
//創(chuàng)建一個(gè)顯示3行的文本框
[Multiline(3)]
public?string?multiline;
//使值變成滑動(dòng)條的方式骂删,并限制大小
[Range(0,?10)]
public?float?range;
//加載時(shí)初始化運(yùn)行函數(shù)
[RuntimeInitializeOnLoadMethod]
static?void?OnRuntimeMethodLoad()
{
Debug.Log("After?scene?is?loaded?and?game?is?running");
}
//可以序列化私有字段同衣,讓?private?也在?Inspector?中顯示
[SerializeField]
private?string?serializeField;
//創(chuàng)造一個(gè)高度為10的空白區(qū)域,可以用做分割線(xiàn)督禽,高度單位估計(jì)是像素
[Space(10)]
public?string?space;
//創(chuàng)建一個(gè)文本區(qū)域颠黎,文本區(qū)域會(huì)單獨(dú)一行存在
[TextArea]
public?string?textArea;
//當(dāng)字段獲得焦點(diǎn)后另锋,鼠標(biāo)指向字段,會(huì)獲得的提示信息
[TooltipAttribute("這是這個(gè)字段的提示信息")]
public?string?toolTip;
}