我需要在标记为可序列化的特定类中获得对我的列表的引用。
根据我的研究,我需要创建一个单独的类以充当容器,然后序列化该类的List。但这在我的特定解决方案中会非常麻烦。
我可以序列化一个GameObjects列表,然后通过UnityEditor API访问和更改这些值吗?
伪代码
var listOfGameObjects = serializedObject.FindProperty("listofgameobjects");//something like this
//I'd do some logic to mutate some sub properties/objects contained in a particular GameObject
//then dirty the attribute so Unity updates the new values I input through the GUI
serializedObject.ApplyModifiedProperties();
but it gets a reference to the List of gameObjects
上下文 我有一个列表,其中包含用于弹出的幻灯片。在我的GUI中,它循环遍历所有“幻灯片”,并允许我编辑作为给定幻灯片GameObject的子级的某些组件(例如Text和Image)
编辑:
我需要引用GameObject,然后通过这些引用对其进行突变,然后将其标记为脏并保存在编辑器中
我编写了以下脚本,以在给定的时间内自动将脏的编辑内容保存在编辑器中。
public static class SaveDirtyEdits//container to hold our coroutine, static because we only want one to be running
{
public static System.Collections.IEnumerator UpdateDirtyGUIChanges(float timeTillSave)
{
yield return new WaitForSeconds(timeTillSave);
//the items that are marked dirty are done automatically in the GUI scripts written for the button manager
UnityEditor.AssetDatabase.SaveAssets();
}
}
public class LeidosAlwaysRunInEditor : Editor
{
public void Update()
{
SaveDirtyEdits.UpdateDirtyGUIChanges(120f);//start a coroutine to save dirty edits (every x amount of input seconds)
MoveNextTarget();//not sure what this does but you need it to update the changes we are applying with our coroutine
}
}
如何将这些游戏对象引用标记为脏?