Unity定制Inspector常用的輔助功能

轉(zhuǎn)載 本文地址:http://fengyu.name/article/310


在Unity中,我們可以很方便的對(duì)Inspector進(jìn)行定制,有很多簡(jiǎn)單方便的小功能都會(huì)用到。例如給一個(gè)int或float加一個(gè)范圍等。這些操作不止可以在Editor類型的腳本中進(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");

}

//字段名稱處,增加一個(gè)右鍵菜單。第一個(gè)參數(shù)為菜單名稱,第二個(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ū)域,可以用做分割線,高度單位估計(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;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容