0

构造函数不使用 IL2CPP。这是我得到的日志。

MissingMethodException:找不到方法:'未找到默认构造函数... ctor() of System.ComponentModel.ByteConverter'。在 System.ArgumentNullException..ctor (System.String paramName) [0x00000] in :0 在 System.Activator.CreateInstance (System.Type 类型,布尔非公共) [0x00000] 在 :0 在 System.Activator.CreateInstance (System.Type type) [0x00000] in :0 at System.ComponentModel.TypeDescriptor.GetConverter (System.Type type) [0x00000] in :0 at JsonFx.Json.TypeCoercionUtility.CoerceType (System.Type targetType, System.Object value) [0x00000]在 :0 在 JsonFx.Json.JsonReader.ReadNumber (System.Type expectedType) [0x00000] 在 :0 在 JsonFx.Json.JsonReader.Read (System.Type expectedType, Boolean typeIsHint) [0x00000] 在 :0
在 JsonFx.Json.JsonReader.ReadArray (System.Type arrayType) [0x00000] in :0 在 JsonFx.Json.JsonReader.Read (System.Type expectedType, Boolean typeIsHint) [0x00000] 在 :0
在 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] 在 :0 在 JsonFx.Json.JsonReader.Read (System.Type expectedType, Boolean typeIsHint) [0x00000] 在 :0 在 JsonFx.Json.JsonReader.ReadObject (System.Type objectType) [0x00000] 在 :0 在JsonFx.Json.JsonReader.Read (System.Type expectedType, Boolean typeIsHint) [0x00000] in :0
在 JsonFx.Json.JsonReader.ReadObject (System.Type objectType) [0x00000] 在:0 在 JsonFx.Json.JsonReader.Read (System.Type expectedType, Boolean typeIsHint) [0x00000] 在:0 在 JsonFx.Json.JsonReader。反序列化(Int32 开始,System.Type 类型)[0x00000] 在:0 在 JsonFx.Json.JsonReader.Deserialize(System.String 值,Int32 开始,System.Type 类型)[0x00000] 在:0 在 JsonFx.Json.JsonReader .Deserialize[BGS] (System.String value) [0x00000] in :0 at GameData.ParseJson () [0x00000] in :0 at GameData.loaddata () [0x00000] in :0 at mainmenuUI.Start () [0x00000]在:0 在 System.Array+InternalEnumerator 1[System.Collections.Hashtable+Slot].get_Current () [0x00000] in <filename unknown>:0 System.InternalEnumerator1:get_Current()

4

2 回答 2

4

这看起来确实是剥离的问题。请注意,尽管 Unity 编辑器中的“剥离级别”设置可能设置为“禁用”,但 IL2CPP 脚本后端仍将执行等效的字节码剥离。

正如 Marius 所提到的,您需要明确告诉 Unity 构建工具链不要剥离 ByteConverter 类型。您可以在 Assets 目录中添加一个包含以下内容的 link.xml 文件:

<linker>
  <assembly fullname="System">
    <type fullname="System.ComponentModel.ByteConverter" preserve="all"/>
  </assembly>
</linker>

这将使所有内容都保留在 ByteConverter 类型(preserve="all"元素)中,这可能有点过多,但您可以按照文档来最大限度地减少程序集中保留的 IL 代码量。

于 2015-06-15T10:32:04.277 回答
1

它是一个剥离错误。使用 IL2CPP 程序集剥离始终启用。尝试更新到最新的 Unity 版本。否则,您可以显式阻止命名空间剥离

于 2015-06-15T09:07:47.577 回答