Unity3D 属性(Attributes)的整理

最近做项目的时候发现属性看似没有什么,但是有时候会非常有用。在这篇文章中我整理下常用的属性。

1.ContextMenu 上下文菜单

这个译名我觉得很不自然,其实上下文算是啥东西……这个函数是在Inspector的脚本中加一个触发事件,就是删除脚本重置脚本按钮的那个小拉菜单中,具体很难说清位置,所以我截了个图。

public class Nigori: MonoBehaviour {
    [ContextMenu("Hello World!")]
    void HelloWorld()    
    {
        Debug.Log("Hello World!");
    }   
}
Unity3D 属性(Attributes)的整理_第1张图片
ContextMenu 上下文菜单.png

2.AddComponentMenu 添加组件菜单

这个函数非常的方便,原本的脚本(组建)都会在“Component/Script”菜单下,在类之前声明一下这个,它便可以出现在"Componet"菜单下的任何位置。。

[AddComponentMenu("MyNigori/NigoriType")]
public class NigoriType: MonoBehaviour
{
 Debug.Log("Hello World!");
}

3.HideInInspector 在检视面板中隐藏

HideInInspector 可以让public 定义的在检视面板中隐藏。

public class Nigori : MonoBehaviour 
{
    [HideInInspector]
    public Transform m_Target;
    void Start()
    {
        m_Target = GameObject.Find("test").transform;
    }
}

4.RequireComponent 必须要有相应的组建

加入一个组建之前必须存在另一个相应的组建,若没有则自动创建。这个在项目中非常有必要用到,尤其是项目人员比较多的时候。
[RequireComponent (typeof (Rigidbody))]
public class Nigori : MonoBehaviour {
void FixedUpdate() {
rigidbody.AddForce(Vector3.up);
}
}

5.Serializable 可序列化

这个属性可以让子类(继承类)的变量属性显示在检视面板中,也能序列化它。(JS的话完全不需要这个属性。)

//SerializableTest.cs
[System.Serializable]
public class SerializableTest
{
    public int p = 5;
    public Color c = Color.white;
}

//SerializableTest2.cs
public class SerializableTest2 : MonoBehaviour
{
    public SerializableTest test;
}

先整理这么多,以后我会把在网上看到的和自己经常用到的整理到这里。

你可能感兴趣的:(Unity3D 属性(Attributes)的整理)