Serialized

作者:追风剑情 发布于:2015-11-14 20:23 分类:Unity3d

序列化对象 与 自定义Inspector属性面板

一、创建MyTransform.cs、TransformInspector.cs


using UnityEngine;
using System.Collections;

public class MyTransform : MonoBehaviour {

	public MySerializable mySerializable;

	[SerializeField]
	private float mscale;

	void OnEnable()
	{
		Debug.Log ("mscale="+mscale);
		Debug.Log ("mySerializable.namber="+mySerializable.namber);
		Debug.Log ("mySerializable.name="+mySerializable.name);
	}

}

[System.Serializable]
public class MySerializable
{
	public int namber;
	public string name;
}
//自定义MyTransform组件的检视面板
using UnityEngine;
using UnityEditor;

[CanEditMultipleObjects]
[CustomEditor(typeof(MyTransform))]
public class TransformInspector : Editor {

	SerializedProperty m_scale;
	SerializedProperty m_serializable;
	SerializedProperty m_serializable_number;
	SerializedProperty m_serializable_name;
	
	void OnEnable () {
		m_scale = serializedObject.FindProperty ("mscale");
		m_serializable = serializedObject.FindProperty ("mySerializable");
		m_serializable_number = serializedObject.FindProperty ("mySerializable.namber");
		m_serializable_name = serializedObject.FindProperty ("mySerializable.name");
	}

	public override void OnInspectorGUI()
	{
		//从对象抓取的最新数据
		serializedObject.Update ();

		//属性的编辑器界面
		EditorGUILayout.PropertyField (m_scale);
		EditorGUILayout.PropertyField (m_serializable);
		if (m_serializable.isExpanded) {
			EditorGUILayout.PropertyField (m_serializable_number);
			EditorGUILayout.PropertyField (m_serializable_name);
		}

		//应用属性,撤销
		serializedObject.ApplyModifiedProperties ();
	}
}


s1.pngs2.png

运行效果:

s3.png

标签: Unity3d

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号