[SerializeField] 在Inspector版面中显示非public属性,并且序列化;若写在public前面,等于没写。

[Obsolete("调用提示信息")]

[NonSerialized]在Inspector版面中隐藏public属性,并且序列化;如果写在非public属性前面,等于没写。



[HideInInspector] 在Inspector版面中隐藏public属性,与上面相比,只是隐藏,没有序不序列化的功能。



[AddComponentMenu("XXX/XX/XXX")] 让Component菜单下出现你自定义的类,位置是“XXX/XX/XXX”,至于功能么,用过Component的都知道,不用解释了吧。



[ExecuteInEditMode] 在编辑界面让你的功能(类)起作用,就是你不用点开始,就可你让你的功能起作用,打个比方,NGUI里面的Slider的滑动条就是酱紫。



[RequireComponent (typeof (ClassName))] 就是在你把被这句话标记的类拖到(或者AddComponent)GameObject上时,自动再给你加上“ClassName”这个类。



[ContextMenu ("XXX")] 在Inspector版面中,右击包含这条标记的类,在菜单中会出现名为“XXX”的选项,点击选项,会执行被标记的功能 注:此乃标记功能也,非标记类。

[MenuItem ("XXX/XXX")] 在菜单中出现选项栏,点一下,执行对应功能。注:对应的功能必须是static,同时,使用的时候需要加上using UnityEditor,这个类也要找个Editor文件夹放(一般放“Assets\Editor”),要不……就等着纠结吧。

1.AddComponentMenu 添加组件菜单

这函数只是起方便用,原本的脚本(组建)都会在“Component/Script”菜单下,在类之前声明一下这个,它便可以出现在"Componet"菜单下的任何位置。说明指的是要重启U3D才能显示,不过测试貌似直接可以显示。





[AddComponentMenu("MyPhysic/PhysicType")]

public class PhysicType: MonoBehaviour

{

}

2.ContextMenu 上下文菜单

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

public class Attributes : MonoBehaviour {

    [ContextMenu("Hello World!")]

    void HelloWorld()    

    {

        Debug.Log("Hello World!");

    }

}

3.ExecuteInEditMode 在Editor模式下运行

跟名字一样,在编辑器中运行。不过有三种函数的调用方式。

a- "Update()" is only called when something in the scene changed.

b- "OnGUI()" is called when the Game View recieves an Event.

c- "OnRenderObject()" and the other rendering callback functions are called on every repaint of the Scene View or Game View.





[ExecuteInEditMode]

public class ExecuteInEditModeTest: MonoBehaviour

{

    private Vector3 vec_Rotation = new Vector3(0.0f, 0.5f, 0.0f);

    //Rotate all the time

    void OnRenderObject()

    {

        transform.Rotate(vec_Rotation);

    }

}

4.HideInInspector 在检视面板中隐藏

public class HideInspectorTest : MonoBehaviour 

{

    

    [HideInInspector]





    public Transform m_Target;

    void Start()

    {

        m_Target = GameObject.Find("test").transform;

    }





}

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

加入一个组建之前必须存在另一个相应的组建,若没有则自动创建。这个在项目中非常有必要用到,尤其是项目人员比较多的时候(大于三四个)。

[RequireComponent (typeof (Rigidbody))]

public class RequireComponentTest : MonoBehaviour {

    void FixedUpdate()  {

        rigidbody.AddForce(Vector3.up);

    }

}

6.NonSerialized 不被序列化

不被序列化该变量,且不显示在检视面板中。

public class Test {

    [System.NonSerialized]

    public int i_Helloword = 5;

}

7.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;



}

8.SerializeField 序列化域(强制序列化)

这里写得比较清楚,可以将私有变量序列化,将U3D的内建变量序列化等。

http://game.ceeger.com/Script/Attributes/SerializeField.html

另外,关于[NonSerialized]和[RPC],理解起来比较麻烦,也不是很常用,就算了……

unity中的[xxxxxx]特性(Attributes)的更多相关文章

  1. C#中的定制特性(Attributes)

    C#中的定制特性(Attributes) 介绍 Attributes是一种新的描述信息,我们既可以使用attributes来定义设计期信息(例如:帮助文件.文档的URL),还可能用attributes ...

  2. Unity中使用Attribute

    Attribute是c#的语言特性 msdn说明如下: The Attribute class associates predefined system information or user-def ...

  3. 【unity shaders】:Unity中的Shader及其基本框架

    shader和Material的基本关系 Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出.绘图单元可以依据这个输出来将图 ...

  4. 【Unity技巧】Unity中的优化技术

    http://blog.csdn.net/candycat1992/article/details/42127811 写在前面 这一篇是在Digital Tutors的一个系列教程的基础上总结扩展而得 ...

  5. 【Unity3D基础教程】给初学者看的Unity教程(七):在Unity中构建健壮的单例模式(Singleton)

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点推荐.谢谢! 该博客中的代码均出自我的开源项目 : 迷你微信 ...

  6. 【《Effective C#》提炼总结】提高Unity中C#代码质量的21条准则

    作者:Williammao, 腾讯移动客户端开发工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/lab/view/290.h ...

  7. 从Unity中的Attribute到AOP(七)

    本章我们将依然讲解Unity中的Attribute,继续命名空间在UnityEngine里的. PropertyAttribute,这个特性主要来控制变量或者类在Inspector里面的显示方式.和P ...

  8. 从Unity中的Attribute到AOP(三)

    上一篇我们对系统的Attributes进行了MSIL代码的查看,了解到了其本质就是一个类的构造函数.本章我们将编写自己的Attributes. 首先我们定义书的属性代码,如下: [AttributeU ...

  9. 【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态

    一.简介 Lua是一门非常强大.非常灵活的脚本语言,自它从发明以来,无数的游戏使用了Lua作为开发语言.但是作为一款脚本语言,Lua也有着自己的不足,那就是它本身并没有提供面向对象的特性,而游戏开发是 ...

随机推荐

  1. 解决WIN7上 SQL2008r2 由于防火墙问题 客户端无法远程连接的问题

    打开防火墙->入站规则->新建规则->选择端口  TCP 1433 允许->... OVER

  2. Oracle Dataguard三种保护模式

    Oracle Dataguard提供了三种数据保护模式,在此分别总结一下三种数据保护模式的特点. 1.最大保护模式1)这种模式提供了最高级别的数据保护能力:2)要求至少一个物理备库收到重做日志后,主库 ...

  3. js获取当前页面的url中id

    function UrlSearch() { var name, value; var str = location.href; //获取到整个地址 var num = str.indexOf(&qu ...

  4. web服务交互中HTTP数据内容GZIP,ZLIB格式压缩与解压缩封装(共享)

    点击下载独立的dll //dll内部封装API格式 //gzip BOOL fnZlibDecompressPacket (__IN_PARAM unsigned char* gZlibDataBuf ...

  5. sql为了实现转换的行列

    全名 学科 成绩 牛芬 语文 81 牛芬 数学 88 牛芬 英语 84 张三 语文 90 张三 数学 98 张三 英语 90 (表一) 现有一个表如(表一) 姓名 语文 数学 英语 牛芬 81 88 ...

  6. 配置VSFTP服务器

    一.Linux FTP服务器分类:  <1>wu-ftp  <2>proftp=profession ftp  <3>vsftp=very security ftp ...

  7. i利用图片按钮 和 input type="image" 为背景提交表单

    <img src="img/cancel.jpg" onclick="javascript:document.getElementByIdx_x('loginFor ...

  8. CentOS6.3 Firefox安装FlashPlayer

    这段时间搞搞CentOS,我自己用的版本是CentOS6.3,基本上都差不多,过程都一样,主要说一下步骤 1.从Adoble官网下载FlashPlayer插件,下载地址:http://get.adob ...

  9. 触摸事件 Touch MotionEvent ACTION

    MotionEvent简介 当用户触摸屏幕时,将创建一个MontionEvent对象,MotionEvent包含了关于发生触摸的位置.时间信息,以及触摸事件的其他细节. 获取MontionEvent对 ...

  10. Java Criteria表关联查询(两个表未定义关联关系)

    Criteria criteria = this.getSession().createCriteria(Competition.class, "b"); DetachedCrit ...