Unity editor利用SerializedObject序列化List
需求
在编辑器自定义窗口中进行序列化List, 用来存放GameObject
实现
利用Unity的SerializedObject在editor中序列化字段
- untiy文档
https://docs.unity3d.com/cn/2020.2/ScriptReference/SerializedObject.html
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class TestWindow : EditorWindow
{
[MenuItem("Test/TestWindow")]
private static void OpenWindow()
{
TestWindow window = GetWindow<TestWindow>();
window.wantsMouseMove = false;
window.titleContent = new GUIContent("TestWindow");
window.Show();
window.Focus();
}
private SerializedObject serializedObject;
private SerializedProperty serializedProperty;
public List<GameObject> gameObjectList = new List<GameObject>();
Vector2 pos;
private void OnEnable()
{
serializedObject = new SerializedObject(this);
serializedProperty = serializedObject.FindProperty("gameObjectList");
}
private void OnGUI()
{
pos = EditorGUILayout.BeginScrollView(pos);
EditorGUILayout.PropertyField(serializedProperty, true);
// 如果需要更新序列化, 调用
// serializedObject.Update();
EditorGUILayout.EndScrollView();
}
}