修飾類
RequireComponent
在添加此腳本時铺根,需要已經(jīng)存在的其它腳本;不存在直接添加。
[RequireComponent(typeof(Rigidbody))]
public class Test : MonoBehaviour
{
}
CreateAssetMenuAttribute
添加菜單項到Create菜單,通常用來創(chuàng)建自定義的ScriptableObject筛严。
[CreateAssetMenu(fileName="sceneData.asset",menuName="Scene Data")]
public class SceneData : ScriptableObject
{
public int ID;
public string Name;
public Vector3[] BornPoint;
}
AddComponentMenu
修飾MonoBehaviour,添加菜單項到AddComponent菜單饶米,可以將一些自定義的組件添加進來桨啃,方便策劃人員添加組件。
[AddComponentMenu("Motion/StraightMove")]
public class StraightMove : MonoBehaviour {
public float speed;
void Start () {
}
void Update () {
}
}
DisallowMultipleComponent
修飾MonoBehaviour檬输,當前gameObject上只能添加一個此腳本照瘾。
[DisallowMultipleComponent]
public class Test : MonoBehaviour
{
}
手動添加時,會彈出以下窗口
實際測試丧慈,在代碼中再次添加這個腳本网杆,也不會成功,會在Console提示信息伊滋,同時AddComponent返回的對象為null碳却。
ExecuteInEditMode
修飾MonoBehaviour,使腳本在場景沒有Play笑旺,部分事件方法也可以運行昼浦。
- Awake
- Update 只有場景中的東西被修改時,才會執(zhí)行筒主。
- OnGUI 通過事件的方式判斷具體操作
- OnRenderObject
https://docs.unity3d.com/560/Documentation/ScriptReference/ExecuteInEditMode.html
PreferBinarySerialization
ScriptObject使用二進制序列化关噪,以提升讀寫性能鸟蟹,但源文件變得不可讀,同時版本控制中不能merge使兔。
[PreferBinarySerialization]
public class MyData : ScriptableObject
{
public float[] lotsOfFloatData = new[] { 1f, 2f, 3f };
public byte[] lotsOfByteData = new byte[] { 4, 5, 6 };
}
SharedBetweenAnimators
修飾StateMachineBehaviour建钥,指定此腳本在多個Stage中共用。
ImageEffect
ImageEffectAllowedInSceneView
屏幕特效在Scene相機也具有ImageEffect
ImageEffectOpaque
指定ImageEffect在Opaque之后虐沥,但在Transparent之后渲染
修飾字段
Multiline
字符串多行顯示
[Multiline(4)]
public string Description;
TextArea
帶滾動條的文本編輯框
[TextArea]
public string Description;
Range
設置int, float的數(shù)值范圍熊经,以滑塊的方式顯示。
[Range(0,1)]
public float alpha;
Tooltip
[Tooltip("Health value between 0 and 100.")]
public int health = 0;
SerializeField
讓私有的字段也可以在Inspector中編輯
[SerializeField]
private int gold;
https://docs.unity3d.com/560/Documentation/ScriptReference/SerializeField.html
ColorUsageAttribute
修飾Color字段欲险,用來設置顏色選擇器的一些屬性镐依,是否顯示Alpha,最大亮度天试,最小亮度等等槐壳。
[ColorUsage(true)]
public Color col;
ContextMenuItem
修飾字段,在Inspector中在字段名上右鍵喜每,彈出菜單务唐,點擊會執(zhí)行設置的方法。
[ContextMenuItem("AddMr.", "AddMr")]
public string Name = "";
public void AddMr()
{
Name = "Mr. " + Name;
}
Delayed
修飾基本類型字段带兜,只有在焦點移除或按了回車枫笛,更改才會生效。國為正常情況下鞋真,在Inspector中修改了字段崇堰,就立馬生效了沃于,有時候希望只有確定后才生效涩咖。
[Delayed]
public string Name = "";
可以在Update中打印Name的值,只有按回車后繁莹,或焦點移除后檩互,Name的值才會更新。
Header
設置字段在Inspector上顯示的分組名字
public string name;
[Header("HP setting")]
public int hp;
public int maxHP;
[Header("Money Setting")]
public int diamond;
public int gold;
Space
字段間分隔幾行
public string Name;
[Space(50)]
public int Age;
HideInInspector
在Inspector中隱藏某個字段咨演,避免公共的字段被修改
[[HideInInspector]
public int p = 5;
修飾方法
ContextMenu
修飾MonoBehaviour的非靜態(tài)方法闸昨,在Inspector面板中腳本上右鍵,彈出的菜單中薄风,添加菜單項饵较,用來觸發(fā)這個方法。
[ContextMenu ("Do Something")]
void DoSomething()
{
Debug.Log ("Do");
}
RuntimeInitializeOnLoadMethod
修飾靜態(tài)方法遭赂,當游戲啟動后循诉,自動調用此方法。但是啟動順序無法保證撇他。
class MyClass{
[RuntimeInitializeOnLoadMethod]
static void OnRuntimeMethodLoad()
{
Debug.Log("After scene is loaded and game is running");
}
}
RPC
本地遠程都存在的RPC方法茄猫。
https://docs.unity3d.com/560/Documentation/ScriptReference/AddComponentMenu.html
https://docs.unity3d.com/560/Documentation/ScriptReference/CanEditMultipleObjects.html