Google.Protobuf.Reflection 无法在 Unity 中使用 il2cpp 脚本
Google.Protobuf.Reflection is not working with il2cpp scripting in Unity
我正在使用 amazon gamelift 在 unity3d 中创建 android 游戏。
我正在使用实时服务器客户端 sdk。当我 运行 该应用程序在我的 gamelift 舰队中创建了一个游戏会话,但在我使用 IL2CPP 服务器脚本时无法发送消息。
当我使用 Mono 时它工作正常但切换后到 IL2CPP 我面临很多维修,我找到了许多错误的解决方案,但无法找到这个特定错误的解决方案。似乎 Google.Protbuff.Reflection 不能与 IL2CPP.Error 一起工作显示它找不到方法 ClearMessage 即使它在那里。
谁能帮助我..
Exception occurred sending data. Exception: The type initializer for 'Com.Gamelift.Rt.Proto.PacketReflection' threw an exception.
<br>
System.ArgumentException: Invalid embedded descriptor for "proto/Packet.proto".
<br>
<b>Stacktrace:</b><br>
Google.Protobuf.Reflection.DescriptorValidationException: com.gamelift.rt.proto.Packet.message: Method ClearMessage not found in Com.Gamelift.Rt.Proto.Packet<br>
at Google.Protobuf.Reflection.OneofDescriptor.CreateAccessor (System.String clrName) [0x00000] in <00000000000000000000000000000000>:0 <br>
at Google.Protobuf.Reflection.OneofDescriptor..ctor (Google.Protobuf.Reflection.OneofDescriptorProto proto, Google.Protobuf.Reflection.FileDescriptor file, Google.Protobuf.Reflection.MessageDescriptor parent, System.Int32 index, System.String clrName) [0x00000] in <00000000000000000000000000000000>:0 <br>
at Google.Protobuf.Reflection.MessageDescriptor+<>c__DisplayClass4_0.<.ctor>b__0 (Google.Protobuf.Reflection.OneofDescriptorProto oneof, System.Int32 index) [0x00000] in <00000000000000000000000000
仅通过反射访问的代码被删除,因为 IL2CPP 不知道需要它,link.xml 解决了这个问题(DataModelBindings 是我所有协议生成代码的 .NET 库)
<linker> <assembly fullname="DataModelBindings" preserve="all"/> </linker>
我正在使用 amazon gamelift 在 unity3d 中创建 android 游戏。
我正在使用实时服务器客户端 sdk。当我 运行 该应用程序在我的 gamelift 舰队中创建了一个游戏会话,但在我使用 IL2CPP 服务器脚本时无法发送消息。
当我使用 Mono 时它工作正常但切换后到 IL2CPP 我面临很多维修,我找到了许多错误的解决方案,但无法找到这个特定错误的解决方案。似乎 Google.Protbuff.Reflection 不能与 IL2CPP.Error 一起工作显示它找不到方法 ClearMessage 即使它在那里。
谁能帮助我..
Exception occurred sending data. Exception: The type initializer for 'Com.Gamelift.Rt.Proto.PacketReflection' threw an exception.
<br>
System.ArgumentException: Invalid embedded descriptor for "proto/Packet.proto".
<br>
<b>Stacktrace:</b><br>
Google.Protobuf.Reflection.DescriptorValidationException: com.gamelift.rt.proto.Packet.message: Method ClearMessage not found in Com.Gamelift.Rt.Proto.Packet<br>
at Google.Protobuf.Reflection.OneofDescriptor.CreateAccessor (System.String clrName) [0x00000] in <00000000000000000000000000000000>:0 <br>
at Google.Protobuf.Reflection.OneofDescriptor..ctor (Google.Protobuf.Reflection.OneofDescriptorProto proto, Google.Protobuf.Reflection.FileDescriptor file, Google.Protobuf.Reflection.MessageDescriptor parent, System.Int32 index, System.String clrName) [0x00000] in <00000000000000000000000000000000>:0 <br>
at Google.Protobuf.Reflection.MessageDescriptor+<>c__DisplayClass4_0.<.ctor>b__0 (Google.Protobuf.Reflection.OneofDescriptorProto oneof, System.Int32 index) [0x00000] in <00000000000000000000000000
仅通过反射访问的代码被删除,因为 IL2CPP 不知道需要它,link.xml 解决了这个问题(DataModelBindings 是我所有协议生成代码的 .NET 库)
<linker> <assembly fullname="DataModelBindings" preserve="all"/> </linker>