zoukankan      html  css  js  c++  java
  • Unity3D中的Attribute详解(六)

    本文将重点对Unity剩下常用的Attribute进行讲解,其他不常用的Attribute各位可以自行去官方文档查阅。

    首先是UnityEngine命名空间下的。

    ColorUsage,这个主要作用于Inspector面板的颜色区域,代码使用如下:

    构造函数有两个,一个只需要填入是否显示Alpha值即可,如果选择false,在Inspector面板将看不到alpha通道选择。

    后面的亮度和曝光度大小取决于hdr是否为true。hdr开启后具体怎么样,各位可以自行去了解,我实在是不知道-_-。

    CreateAssetMenu,如果你有一键创建.asset文件的需求,就可以用这个menu,上一篇文章忘讲了-_-。

    我们新建一个ScriptableObject文件。代码如下:

    在project视图中任意位置右键,在create菜单中可以看到我们定义的菜单项,点击可以新建一个asset文件。具体参数和表现相信我不用多说了。

     Delayed,这个属性主要作用于float,int或者string等字段,效果是在Inspector字段,给序列化参数赋值时,必须按回车才能够确认。否则会被还原回之前的值。这个操作个人觉得可以用在一些较为复杂的字段区域中。比如playersetting里的宏定义就带有这个属性,有时候我们输入免不了会出错,不按回车,给了我们一个纠正的机会。

    经过测试,这个delay挺坑爹的,Inspector随便找个区域点点,值就被保存下来了。。。不推荐使用。

    DisallowMultipleComponent,很好理解的一个属性,建议我们写的所有附加脚本都要这个属性。当你尝试添加第二个脚本的时候,会弹出错误:

    如果之前已经加过多个,则不会报错,需要注意。

    ExecuteInEditMode,默认情况下我们所有的MonoBehaviours只能在运行模式下才能调到Awake,Update等参数。这个属性可以使其在编辑器未运行状态调到所有覆写参数。

    有几个函数需要注意,OnRenderObject或者其他绘制函数,会在每次重绘场景视图或者游戏视图的时候被调用,因此你随便拖动鼠标,对比点点,都可能被多次调用,除非有特殊需求,一般不推荐使用。

    OnGUI函数会在游戏视图(Game View)收到event的时候被调用。看了一下,修改项目树形结构,或者最大化最小化,或者鼠标移进移出游戏视图,都可能被调用到。但并不是每帧调用。

    其他几个,Awake,OnEnable和Start会在预制初拖入场景或者克隆的时候被调用,调用顺序和运行时完全一致。显示隐藏会调用OnEnable和OnDisable。删除预制会调用OnDisable。每次你更改结构目录都会调用Update,同时Update也不是每帧都会被调用。

    GUITarget,这个属性作用于OnGUI函数。指定OnGUI里的显示内容在哪些display视图中显示,具体参数含义可以参考官方文档。

    Header,这个属性可以在Inspector面板中为特定参数添加一个小标题,添加代码如下:

    在监视面板中:

    需要注意,Header不能添加到类定义字段上面

     如果你有一个自定义文档需要说明当前监视器里参数的话,可以用HelpURL

    修改代码如下:

    注意只能附加到类定义上。

    点击Test后面的问号。可以跳转到你给的网页啦!

    ImageEffectAllowedInSceneView,具有此属性的任何图像效果可以渲染到场景视图相机中,具体用法太麻烦,这里不作说明

    在这里可以看到Image Effects。具体可参考Image Effects。

    还有ImageEffectOpaqueImageEffectTransformsToLDR这两个特性,用的不多,这里先占坑。以后研究一下再说明。

    Multiline,这个特性可以给string字段在监视面板中显示多行。

    代码如下:

    PreferBinarySerialization,这个特性只能用于ScriptableObject类型,尤其是当你的asset文件含有大量数据的时候,始终保持存储为二进制,可以提高读写性能,同时也保持更为紧凑的数据存储。

    用notepad++打开我们刚才创建的自定义资源.asset文件,可以看到:

    十分醒目,也不安全。

    加上PreferBinarySerialization特性后:

    记得重新创建一个Asset文件,原来的不会被修改,用notepad++查看会发现全变成了二进制。而单个asset文件的大小也从13kb降到了5kb,成绩喜人。

    需要注意的是,序列化方式必须唯一,对于资源文件中内嵌资源文件的,请使用统一的序列化方式,否则unity会自动采用主资源的序列化方式,可能会造成一些问题。场景文件始终遵循项目配置的序列化方式,因此场景中嵌入的asset文件,PreferBinarySerialization属性总是会被忽略。

    暂时写到这,其他的属性放到下一篇文章。。太特么多了。

  • 相关阅读:
    Unity UGUI基础之Text
    Unity UGUI之Canvas&EventSystem
    ROS(indigo)国外开源示例包括多机器人控制等基于V-Rep和Gazebo的仿真
    lk中内联调用的dsb()
    svn 回退/更新/取消至某个版本命令详解
    ubuntu16.04中可以用于教学的有趣的应用
    高级UI晋升之布局ViewGroup(四)
    高级UI晋升之常用View(三)下篇
    高级UI晋升之常用View(三)中篇
    高级UI晋升之常用View(三)上篇
  • 原文地址:https://www.cnblogs.com/cangxw/p/8288384.html
Copyright © 2011-2022 走看看