在Unity中,我决定为我的组件制作一个自定义编辑器.
组件本身有一个我声明为List的对象列表.
编辑器的目标是这样的:
myCustomList = serializedObject.FindProperty ("myCustomList");
问题是,当我尝试使用myCustomList .objectReferenceValue = modifiedCustomList作为List 告诉我List< MyCustomObject>不能被强制转换为Object. 我试图通过myCustomList =(target as TargetClass).myCustomList简单地设置值,但是(当然)当我按下播放按钮时,对象实例被重置为一个全新的列表. 如何将List转换为对象?或者如何使用serializedObject来获取/设置Lists等类型的数据?
最佳答案 你需要像这样遍历对象……
SerializedProperty myCustomList = serializedObject.FindProperty ("myCustomList");
for (int i = 0; i < myCustomList .arraySize; i++)
{
SerializedProperty elementProperty = myCustomList.GetArrayElementAtIndex(i);
//Since this the object is not UnityEngine.Object you can not convert them the unity way. The compiler can determine the type that way so.....
MyCustomList convertedMCL = elementProperty.objectReferenceValue as System.Object as MyCustomList;
}
由于SerializedProperty不是UnityEngine.Object,因此无法以统一方式转换它们.编译器无法确定那种方式.
关于该主题的讨论可以在here找到.