首页
学习
活动
专区
圈层
工具
发布

Unity高级开发(二)-编辑器模式下的序列化对象类与序列化属性类

正所谓:人靠衣装,佛靠金装。学会VR与游戏开发,成就大神人生。

  • 欢迎关注公众号:雷潮课堂

编辑器下的序列化对象类与序列化属性类

一、课程内容

1-1本课程目标 1-2他可以做什么

二、SerializedObject

2-1属性 2-2方法

三、SerializedProperty

3-1属性 3-2方法

四、练习

获取材质球中的属性

1、课程内容
  • 1-1 本课程目标 学会序列化对象类与序列化属性类,达到掌握策划高难度
  • 1-2可以做什么 通过SerializedObject访问ParticleSystem中的参数 (只在编辑器下有效, 运行无效) 清理material中无用的的property
2、SerializedObject

序列化对象类

  • 2-1 属性
代码语言:javascript
复制
targetObject / targetObjects:返回一个或一组Object;
  • 2-2方法

方法

代码语言:javascript
复制
根据名称查找对象中的序列化属性;如果不知道属性路径可以通过在属性面板上的相应变量上使用shift+右键可log路径名;(侧重于查找指定属性)
public SerializedProperty FindProperty(string propertyPath);

获取第一个序列化属性,然后可以通过SerializedProperty的Next()方法遍历对象中的序列化属性;(侧重于遍历功能)
public SerializedProperty GetIterator();
 
将对属性的修改应用到该序列化对象上;
public bool ApplyModifiedProperties();
public bool ApplyModifiedPropertiesWithoutUndo()
拷贝属性值;注意两者方法的区别,第二个如果进行拷贝操作则返回true;
public void CopyFromSerializedProperty(SerializedProperty prop);
public bool CopyFromSerializedPropertyIfDifferent(SerializedProperty prop);

Shift+鼠标右键即可显示序列化路径

3、SerializedObject

  • 3-1属性
代码语言:javascript
复制
boolValue
floatValue 
doubleValue 
intValue 
vector3Value
rectValue:为属性指定值;
name: 获取属性名
propertyPath:获取属性路径
  • 3-2方法

方法

代码语言:javascript
复制
方法都比较简单,测试一下即可
四、练习

利用记事本打开材质球属性如下

代码语言:javascript
复制
Material mat = AssetDatabase.LoadAssetAtPath(path, typeof(Material)) as Material;
SerializedObject so = new SerializedObject(mat);
SerializedProperty m_SavedProperties = so.FindProperty("m_SavedProperties");
SerializedProperty property = saveProperty.FindPropertyRelative("m_Scale");
下一篇
举报
领券