[SerializeField] 在Inspector版面中显示非public属性,并且序列化;若写在public前面,等于没写……(至于序列化是啥,自行脑补……),上图:
![](https://i-blog.csdnimg.cn/blog_migrate/449d94426a56acce0177baefac9b7625.jpeg)
[NonSerialized]在Inspector版面中隐藏public属性,并且序列化;如果写在非public属性前面,等于没写……,上图:
![](https://i-blog.csdnimg.cn/blog_migrate/f055c070dfd39c45a4921c514b44ebab.jpeg)
[HideInInspector] 在Inspector版面中隐藏public属性,与上面相比,只是隐藏,没有序不序列化的功能……,上图:
![](https://i-blog.csdnimg.cn/blog_migrate/c9ca568779dcc5391f31f5b3e0ba0a6c.jpeg)
[AddComponentMenu("XXX/XX/XXX")] 让Component菜单下出现你自定义的类,位置是“XXX/XX/XXX”,至于功能么,用过Component的都知道,不用解释了吧……,上图:
![](https://i-blog.csdnimg.cn/blog_migrate/baa3ad21d4aa06d891185af3dfe60fdf.jpeg)
[ExecuteInEditMode] 在编辑界面让你的功能(类)起作用,就是你不用点开始,就可你让你的功能起作用,打个比方,NGUI里面的Slider的滑动条就是酱紫……,上图:
![](https://i-blog.csdnimg.cn/blog_migrate/75885861620b8c560f24c6d654ee789d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0a17e51a39bd8049dd02dd20d5f87b75.jpeg)
[RequireComponent (typeof (ClassName))] 就是在你把被这句话标记的类拖到(或者AddComponent)GameObject上时,自动再给你加上“ClassName”这个类……,上图:
![](https://i-blog.csdnimg.cn/blog_migrate/9153ea97e5c75432e5c60d573e8255f6.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/aff9b51e34dbf87cc20d01a7c49bf991.jpeg)
[ContextMenu ("XXX")] 在Inspector版面中,右击包含这条标记的类,在菜单中会出现名为“XXX”的选项,点击选项,会执行被标记的功能(注:此乃标记功能也,非标记类),上图:
![](https://i-blog.csdnimg.cn/blog_migrate/75885861620b8c560f24c6d654ee789d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bb368ec3960b391d6a81d90f6ca550b8.jpeg)
[MenuItem ("XXX/XXX")] 在菜单中出现选项栏,点一下,执行对应功能。注:对应的功能必须是static,同时,使用的时候需要加上using UnityEditor,这个类也要找个Editor文件夹放(一般放“Assets\Editor”),要不……就等着纠结吧~~,上图:
![](https://i-blog.csdnimg.cn/blog_migrate/9b8fd527f20c46266cb25ca9d9500307.jpeg)
另外,关于[NonSerialized]和[RPC],理解起来比较麻烦,也不是很常用,就算了……
![](https://i-blog.csdnimg.cn/blog_migrate/d9e91e1ea25c79e4a967811cb0c6cc6b.png)