我试图从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
为什么会发生这种情况?
1条答案
按热度按时间wlp8pajw1#
首先,调试test1,它是一个对象类型,检查它是否与LocaleFilesData类型相同