本文将重点对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属性总是会被忽略。

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

Unity3D中的Attribute详解(六)的更多相关文章

  1. C#中的Attribute详解(下)

    原文地址:https://blog.csdn.net/xiaouncle/article/details/70229119 C#中的Attribute详解(下) 一.Attribute本质 从上篇里我 ...

  2. Unity3D中的Coroutine详解

    Unity中的coroutine是通过yield expression;来实现的.官方脚本中到处会看到这样的代码. 疑问: yield是什么? Coroutine是什么? unity的coroutin ...

  3. 【Unity3D/C#】Unity3D中的Coroutine详解

    Unity中的coroutine是通过yield expression;来实现的.官方脚本中到处会看到这样的代码. 疑问: yield是什么? Coroutine是什么? unity的coroutin ...

  4. js中的attribute详解

    Attribute是属性的意思,文章仅对部分兼容IE和FF的Attribute相关的介绍.attributes:获取一个属性作为对象getAttribute:获取某一个属性的值object.getAt ...

  5. oracle中imp命令详解 .

    转自http://www.cnblogs.com/songdavid/articles/2435439.html oracle中imp命令详解 Oracle的导入实用程序(Import utility ...

  6. .Net Attribute详解(下) - 使用Attribute武装枚举类型

    接上文.Net Attribute详解(上)-Attribute本质以及一个简单示例,这篇文章介绍一个非常实用的例子,相信你一定能够用到你正在开发的项目中.枚举类型被常常用到项目中,如果要使用枚举To ...

  7. .Net Attribute详解(一)

    .Net Attribute详解(一) 2013-11-27 08:10 by JustRun, 1427 阅读, 14 评论, 收藏, 编辑 Attribute的直接翻译是属性,这和Property ...

  8. Python中time模块详解

    Python中time模块详解 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. ...

  9. 【转】linux中inittab文件详解

    原文网址:http://www.2cto.com/os/201108/98426.html linux中inittab文件详解 init的进程号是1(ps -aux | less),从这一点就能看出, ...

  10. ALSA声卡驱动中的DAPM详解之七:dapm事件机制(dapm event)

    前面的六篇文章,我们已经讨论了dapm关于动态电源管理的有关知识,包括widget的创建和初始化,widget之间的连接以及widget的上下电顺序等等.本章我们准备讨论dapm框架中的另一个机制:事 ...

随机推荐

  1. docker build提示 error checking context:can't stat xxx

    这个提示基本是权限不够外加目录结构不对,保险的做法直接删除 Dockerfile. 正确做法:(可能还有其他的解决方案吧,这个可以生效) 重新建个目录,给目录授权,然后再dockerfile文件夹中建 ...

  2. zxb2022习题班16

    (1) 原则:合同中包含多项履约义务的,企业应当按照各单项履约义务所承诺的商品的单独售价的比例,将交易价格分摊至各单项履约义务. 方法:按照A和B商品单独售价的相对比例, 2x22年4月16日 借:合 ...

  3. 3DMAX2023卸载方法,如何完全彻底卸载删除清理干净3dmax各种残留注册表和文件?【转载】

    3dmax2023卸载重新安装方法,使用清理卸载工具箱完全彻底删除干净3dmax2023各种残留注册表和文件.3dmax2023显示已安装或者报错出现提示安装未完成某些产品无法安装的问题,怎么完全彻底 ...

  4. python3GUI--用Tk开发一款恶搞蓝屏软件(附源码)

    目录 一.准备工作 1.Tkinter 2.科普-电脑蓝屏 二.预览 1.蓝屏-win10.win11(中文版) 2.蓝屏-win10.win11(英文版) 3.Windows其他版本(XP.Win7 ...

  5. Python生态工具

    Python内置小工具 1秒钟启动一个下载服务器 在实际工作中,时常会有这样的一个需求:将文件传给其他同事.将文件传给同事本身并不是一个很繁琐的工作,现在的聊天工具一般都支持文件传输.但是,如果需要传 ...

  6. python 实现视频流下载保存MP4

    # -*- coding:utf-8 -*-import sysimport osfrom glob import globimport requests reload(sys)sys.setdefa ...

  7. RabbitMQ安装失败 地址提示错误

    最后设置为: D:\RabbitMQ\rabbitmq_server-3.7.10-rc.3\sbin>set ERLANG_HOME=D:\Erlang\erl10.2

  8. jmeter--负载测试

    负载测试 1. jmeter插件处理 2. 下载负载测试计划所需要插件 3. 负载测试计划 4. 波浪形的测试计划--测试服务器的稳定性 一般用于测试稳定的场景测试(有规律的活动/场景/接口请求等等, ...

  9. MySql分库分表以及相关问题

    为什么要分库分表? MySql是存在瓶颈的,数据量就是他最大的瓶颈,如果一张表或者一个数据库里面的数据量过大都会导致一些意料之外的问题,譬如查询过慢,难以维护等问题,这时候就要想出一个完美的解决办法. ...

  10. Hyperf安装

    转载网址: https://www.cnblogs.com/lyc94620/p/12821723.html