JsonFx与IL2CPP

时间:2015-06-15 08:36:38

标签: json unity3d jsonfx il2cpp

构造函数不使用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 + InternalEnumerator 1[System.Collections.Hashtable+Slot].get_Current () [0x00000] in <filename unknown>:0 System.InternalEnumerator 1:GET_CURRENT()

2 个答案:

答案 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