unity3d 类型转换时,LoadAll引发错误“InvalidCastException”和“Null异常

8yparm6h  于 2022-11-25  发布在  其他
关注(0)|答案(1)|浏览(156)

我试图从Resources文件夹加载我的可脚本化对象,但在类型转换时,它一直抛出“InvalidCastException”和“Null Exception”。
代码如下:

UnityEngine.Object[] test1 = Resources.LoadAll("Localization", typeof(LocaleFilesData));
Debug.Log($"Resources {test1.Length} {test1[0].GetType()}");

LocaleFilesData[] test2 = (LocaleFilesData[])Resources.LoadAll("Localization", typeof(LocaleFilesData));
Debug.Log($"Resources {test2.Length} {test2[0].GetType()}");

LocaleFilesData[] test3 = Resources.LoadAll("Localization", typeof(LocaleFilesData)) as LocaleFilesData[];
Debug.Log($"Resources {test3.Length} {test3[0].GetType()}");[

测试1运行正常。
Test2显示错误:“无效转换异常:指定的转换无效。”
Test3显示另一个错误:“空引用异常:对象引用未设置为对象的示例。”
如果我先保存Object[]并像下面这样分别进行类型转换,它就能转换成功。

UnityEngine.Object[] test1 = Resources.LoadAll("Localization", typeof(LocaleFilesData));
LocaleFilesData data = (LocaleFilesData)test1[0]; // data != null

为什么会发生这种情况?

wlp8pajw

wlp8pajw1#

首先,调试test1,它是一个对象类型,检查它是否与LocaleFilesData类型相同

相关问题