构造函数不使用IL2CPP.Here是我得到的日志。
MissingMethodException:找不到方法:'默认构造函数不是 发现... System.ComponentModel.ByteConverter'的ctor()。在 System.ArgumentNullException..ctor(System.String paramName)[0x00000] in:在System.Activator.CreateInstance中为0 (System.Type type,Boolean nonPublic)[0x00000] in:0 at System.Activator.CreateInstance(System.Type type) [0x00000] in:0 at System.ComponentModel.TypeDescriptor.GetConverter(System.Type类型) [0x00000] in:0 at JsonFx.Json.TypeCoercionUtility.CoerceType(System.Type targetType, System.Object value)[0x00000] in:0 at JsonFx.Json.JsonReader.ReadNumber(System.Type expectedType)[0x00000] in:0在JsonFx.Json.JsonReader.Read(System.Type expectedType,Boolean typeIsHint)[0x00000] in:0
在JsonFx.Json.JsonReader.ReadArray(System.Type arrayType)[0x00000] in:0在JsonFx.Json.JsonReader.Read(System.Type expectedType,Boolean typeIsHint)[0x00000] in:0
在JsonFx.Json.JsonReader.ReadObject(System.Type objectType) [0x00000] in:JsonFx.Json.JsonReader.Read中的0 (System.Type expectedType,Boolean typeIsHint)[0x00000] in:0 at JsonFx.Json.JsonReader.ReadObject(System.Type) objectType)[0x00000] in:0 at JsonFx.Json.JsonReader.Read(System.Type expectedType,Boolean typeIsHint)[0x00000] in:0 at JsonFx.Json.JsonReader.ReadObject(System.Type objectType)[0x00000] in:0在JsonFx.Json.JsonReader.Read(System.Type expectedType,Boolean typeIsHint)[0x00000] in:0
在JsonFx.Json.JsonReader.ReadObject(System.Type objectType) [0x00000] in:JsonFx.Json.JsonReader.Read中的0 (System.Type expectedType,Boolean typeIsHint)[0x00000] in:0 at JsonFx.Json.JsonReader.Deserialize(Int32 start, System.Type type)[0x00000] in:0 at JsonFx.Json.JsonReader.Deserialize(System.String值,Int32 start, System.Type type)[0x00000] in:0 at JsonFx.Json.JsonReader.Deserialize [BGS](System.String值) [0x00000] in:0,GameData.ParseJson() [0x00000] in:0,GameData.loaddata()[0x00000] in:0 in mainmenuUI.Start()[0x00000] in :0点 的System.Array + InternalEnumerator1[System.Collections.Hashtable+Slot].get_Current () [0x00000] in <filename unknown>:0 System.InternalEnumerator
1:GET_CURRENT()
答案 0 :(得分:3)
这看起来像剥离问题。请注意,虽然Unity Editor中的“Stripping Level”设置可能设置为“Disable”,但IL2CPP脚本后端仍将执行等效的字节码剥离。
正如Marius所说,你需要明确告诉Unity构建工具链不要剥离ByteConverter类型。您可以在Assets目录中添加link.xml文件,其中包含以下内容:
<linker>
<assembly fullname="System">
<type fullname="System.ComponentModel.ByteConverter" preserve="all"/>
</assembly>
</linker>
这将保留ByteConverter类型(preserve="all"
元素)中的所有内容,这可能有点过多,但您可以按照documentation来最小化保留的IL代码量集会。
答案 1 :(得分:1)
它是一个剥离错误。使用IL2CPP装配时始终启用剥离。尝试更新到最新的Unity版本。否则你可以explicitly prevent namespaces from stripping。