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

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

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


    公众号二维码.jpg

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

一、课程内容

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 属性
targetObject / targetObjects:返回一个或一组Object;
  • 2-2方法


    Unity高级开发(二)-编辑器模式下的序列化对象类与序列化属性类_第1张图片
    方法
根据名称查找对象中的序列化属性;如果不知道属性路径可以通过在属性面板上的相应变量上使用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属性
boolValue
floatValue 
doubleValue 
intValue 
vector3Value
rectValue:为属性指定值;
name: 获取属性名
propertyPath:获取属性路径
  • 3-2方法


    Unity高级开发(二)-编辑器模式下的序列化对象类与序列化属性类_第2张图片
    方法
方法都比较简单,测试一下即可
四、练习
Unity高级开发(二)-编辑器模式下的序列化对象类与序列化属性类_第3张图片
利用记事本打开材质球属性如下
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");
  • 欢迎购买本课程:

腾讯课堂


腾讯课堂

微信小程序

网易云课堂


网易云课堂

你可能感兴趣的:(Unity高级开发(二)-编辑器模式下的序列化对象类与序列化属性类)