(转载)Unity3d中的属性(Attributes)整理
2016-05-15 15:21
155 查看
附加:
float字段检视面板修改:[Range(1,10)]
对属性进行分组:[Header("xxx")]
工具栏中调用方法,类文件需在Editor文件夹中:[MenuIte("")]。
[MenuItem("PathTool/Set Parent %q")]
static void SetParent()
{
dosomething;
}
转载于:
Attributes属性属于U3D的RunTimeClass,所以加上以下的命名空间是必须的了。其它倒没什么需要注意的。本文将所有运行属性过一遍罢了。
using UnityEngine;
using System.Collections;
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!");
}
}
![](http://s13.sinaimg.cn/mw690/5b6cb950gcf441a0e1dfc&690)
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;
}
![](http://s9.sinaimg.cn/mw690/5b6cb950gcf441c5a0b28&690)
8.SerializeField 序列化域(强制序列化)
这里写得比较清楚,可以将私有变量序列化,将U3D的内建变量序列化等。 http://game.ceeger.com/Script/Attributes/SerializeField.html
下面的ATTRIBUTE属性估计是没什么人用的了,我也没怎么用过。
1.ImageEffectOpaque 不透明图像效果优先
Any Image Effect with this attribute will be rendered after opaque geometry but before transparent geometry.
This allows for effects which extensively use the depth buffer (SSAO ect) to only affect opaque pixels. This Attribute can be used to reduce the amount of visual artifacts in a scene with post processing.
没用过这玩意,不过应该很少用得到,优化加速渲染。
2.ImageEffectTransformsToLDR
也没用过这玩意,LDR应该是某种加载方式。高动态光照渲染(High-Dynamic Range,简称HDR)。
When using HDR rendering it can sometime be desirable to switch to LDR rendering during ImageEffect rendering.
Using this Attribute on an image effect will cause the destination buffer to be an LDR buffer, and switch the rest of the Image Effect pipeline into LDR mode. It is the responsibility of the Image Effect that this Attribute is associated to ensure that the output is in the LDR range.
3.NotConvertedAttribute 不转换属性
我觉得这个应该是没有人用的……打包资源的时候,不将成员或类型转换到相应平台,不是很理解这是干嘛的。
Instructs the build pipeline not to convert a type or member to the target platform.
4.NotFlashValidatedAttribute 不允许转换到FLASH平台
又是个没人用的东西吧?
Instructs the build pipeline not to try and validate a type or member for the flash platform.
5.NotRenamedAttribute 不允许属性更名
……
6.PropertyAttribute 财产属性?搞不懂
也不知道用来做啥的。
7.PRC
这个貌似跟NETWORK相关,U3D的NETWORK渣渣,不管了。
后续整理
8.Spece
在两个属性间添加一定像素的间隔
9.HelpURL
可以添加在线说明,必须在类前面声明,这里点击属性面板中的?则会在浏览器中打开百度网址,注意前面的HTTP://或http://不能省略。
![](https://images2015.cnblogs.com/blog/760344/201610/760344-20161005143711317-360757076.png)
float字段检视面板修改:[Range(1,10)]
对属性进行分组:[Header("xxx")]
工具栏中调用方法,类文件需在Editor文件夹中:[MenuIte("")]。
[MenuItem("PathTool/Set Parent %q")]
static void SetParent()
{
dosomething;
}
转载于:
葱烧烙饼的博客
http://blog.sina.com.cn/aaron888888Attributes属性属于U3D的RunTimeClass,所以加上以下的命名空间是必须的了。其它倒没什么需要注意的。本文将所有运行属性过一遍罢了。
using UnityEngine;
using System.Collections;
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
下面的ATTRIBUTE属性估计是没什么人用的了,我也没怎么用过。
1.ImageEffectOpaque 不透明图像效果优先
Any Image Effect with this attribute will be rendered after opaque geometry but before transparent geometry.
This allows for effects which extensively use the depth buffer (SSAO ect) to only affect opaque pixels. This Attribute can be used to reduce the amount of visual artifacts in a scene with post processing.
没用过这玩意,不过应该很少用得到,优化加速渲染。
2.ImageEffectTransformsToLDR
也没用过这玩意,LDR应该是某种加载方式。高动态光照渲染(High-Dynamic Range,简称HDR)。
When using HDR rendering it can sometime be desirable to switch to LDR rendering during ImageEffect rendering.
Using this Attribute on an image effect will cause the destination buffer to be an LDR buffer, and switch the rest of the Image Effect pipeline into LDR mode. It is the responsibility of the Image Effect that this Attribute is associated to ensure that the output is in the LDR range.
3.NotConvertedAttribute 不转换属性
我觉得这个应该是没有人用的……打包资源的时候,不将成员或类型转换到相应平台,不是很理解这是干嘛的。
Instructs the build pipeline not to convert a type or member to the target platform.
4.NotFlashValidatedAttribute 不允许转换到FLASH平台
又是个没人用的东西吧?
Instructs the build pipeline not to try and validate a type or member for the flash platform.
5.NotRenamedAttribute 不允许属性更名
……
6.PropertyAttribute 财产属性?搞不懂
也不知道用来做啥的。
7.PRC
这个貌似跟NETWORK相关,U3D的NETWORK渣渣,不管了。
后续整理
8.Spece
在两个属性间添加一定像素的间隔
9.HelpURL
可以添加在线说明,必须在类前面声明,这里点击属性面板中的?则会在浏览器中打开百度网址,注意前面的HTTP://或http://不能省略。
![](https://images2015.cnblogs.com/blog/760344/201610/760344-20161005143711317-360757076.png)
![](https://images2015.cnblogs.com/blog/760344/201610/760344-20161005143722348-357676398.png)
相关文章推荐
- Part2:Unity学习笔记十七 - Space Shooter(从视频最后一课向Done_Main.unity场景修改的过程)
- Unity3D NGUI学习(一)血条
- unity, monoDevelop ide 代码提示不起作用的解决方法
- Unity与IOS通信
- Unity3D在Windows的全屏和跨屏(双屏)方案
- 设置Ubuntu 16.04 LTS的Unity启动器的位置命令
- DirectCompute tutorial for Unity: Kernels and thread groups
- 【VR视频播放】解决Unity模型贴图反转的问题
- 【VR开发】htc vive+unity 3D 简单保龄球游戏
- Part2:Unity学习笔记十六 - Space Shooter(从视频最后一课向Done_Main.unity场景修改的过程)
- Unity3D之Mecanim动画系统
- Unity3D之Easytouch控件控制主角移动
- Unity mesh texture开启 read 会增加内存畅想
- Unity memory profile面板参数解析
- VR虚拟现实技术学习资料
- unity 调用安卓系统摄像机和相册并对图片进行裁剪(一)
- Unity3d Realtime Dynamic Volume Clouds Rendering
- Unity3d Realtime Dynamic Volume Clouds Rendering
- Unity3d制作Loading场景进度条
- Part2:Unity学习笔记十五 - Space Shooter(从视频最后一课向Done_Main.unity场景修改的过程)