gpt4 book ai didi

c# - 如何将 List 转换为对象

转载 作者:行者123 更新时间:2023-11-30 12:27:31 27 4
gpt4 key购买 nike

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

编辑器的目标是这样的:

myCustomList = serializedObject.FindProperty ("myCustomList");

问题是当我尝试获取/设置 myCustomList 的值时使用 myCustomList .objectReferenceValue = modifiedCustomList as List< MyCustomObject >告诉我 List 不能转换为对象。

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

如何将列表转换为对象?或者如何使用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 .

关于c# - 如何将 List<T> 转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25073020/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com