- Unity特性是一系列辅助性的功能,在编辑器扩展、检视面板提示、防止某些错误操作方面非常有用。
- 大致有几个功能块:菜单编辑、检视面板编辑、脚本相关
(主要参考:http://www.360doc.com/content/15/1205/14/25502502_518083734.shtml 利用unity3d属性来设置Inspector面板的特殊行为)
- 序列化与反序列化
①原理:
– 序列化(串行化): 将数据结构或对象转换成二进制串的过程
–反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程
②关键词:
1)SerializeField(序列化):将私有非静态的类成员变量显示在Inspector面板上,能轻松赋值的同时不破坏其封装性。
namespace XJH
{
public class Test : MonoBehaviour
{
[SerializeField]
private string xiaoMaoMi;
//测试输出
private void Start()
{
Debug.Log("小猫咪 @_@ :" + xiaoMaoMi);
}
}
}
直接在检视面板赋值:
测试结果
2)HideInInspector:有了这个特性以后,类的成员变量就不会在检视面板上显示。可以和SerializeField一起使用。大意是:序列化,但不妨碍不在面板上显示。
[HideInInspector]
public string xiaoMaoMi = "miao wu!";
3)System.Serializable:序列化,对象是类、枚举、结构、委托,将其转化为二进制数据存储起来
(具体请参考雨松大神 http://www.xuanyusong.com/wp-content/uploads/2017/04/Snip20170419_4.png)
4)System.NonSerialized:反序列化,可以在序列化的类或者其他容器中将不需要被序列化的成员分离出来,不做序列化处理。
- 其他特性
1)Multiline:允许其标记下的string变量有多行输出
[Multiline]
public string xiaoMaoMi;
2)Header:提示信息
[Header("小猫咪")]
public string xiaoMaoMi = "miao wu!";
3)RequireComponent:挂脚本的时候添加所需组件,相当于自己在Reset方法里调用AddComponent
[RequireComponent(typeof(AudioSource))]
public class Test : MonoBehaviour
{
}
4)DisallowMultipleComponent:当前游戏对象不能多次添加该脚本
5)ContextMenu:组件管理里(直接在组件上右键也行)增加一个方法
[ContextMenu("Start")]
private void Start()
{
Debug.Log("小猫咪 @_@ :" + xiaoMaoMi);
}
6)AddComponentMenu:在unity的Component菜单里增加选项
[AddComponentMenu("小猫咪/喵呜")]
public class Test : MonoBehaviour
{
}
7) ExecuteInEditMode:编辑器模式下,非运行状态选中就能运行
[ExecuteInEditMode]
public class Test : MonoBehaviour
{
void Start()
{
Debug.Log("小猫咪");
}
}
8)Tooltip:光标提示。鼠标停留在该变量上面时,会有提示。
[Tooltip("小猫咪")]
public string xiaoMaoMi;
9)DllImprot:导入C++的程序集
//伪代码
[DllImport("a")]
static extern void SSS()
{
}