如何将List <t>转换为对象</t>

时间:2014-08-01 04:48:11

标签: c# unity3d

在Unity中,我决定为我的组件制作一个自定义编辑器 组件本身有一个我已声明为List的对象列表。

编辑的目标是:

myCustomList = serializedObject.FindProperty ("myCustomList");

问题在于,当我尝试使用myCustomList获取/设置myCustomList .objectReferenceValue = modifiedCustomList as List< MyCustomObject >的值时,告诉我List&lt; MyCustomObject&GT;不能作为对象投射。

我试图通过myCustomList =(target as TargetClass).myCustomList设置值,但是(当然)当我按下播放按钮时,对象实例被重置为一个全新的列表。

如何将List转换为对象?或者如何使用serializedObject获取/设置Lists等类型的数据?

1 个答案:

答案 0 :(得分:2)

你需要像这样迭代对象......

 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