используйте protobuf- net r668 \ Full \ unity \ protobuf- net .dll
Тот же код может нормально работать в Unity2018.4.12.
Однако из-за некоторых по причинам, мне нужно перейти на версию выше 2019.2.
Когда я использую Unity2019.3.11f1, десериализация неверна.
Я видел вопрос, в котором говорится, что r669 может устранить ошибку, но я могу не нашел.
Отчет об ошибке следующий:
DeSerialize<PBConfigList`1[UnitLevel]> Field: ProtoBuf.ProtoException: Sub-message not read correctly
at ProtoBuf.ProtoReader.EndSubItem (ProtoBuf.SubItemToken token, ProtoBuf.ProtoReader reader) [0x0009d] in <46c30dcdddb14f47b90a4218bec05eb9>:0
at ProtoBuf.ProtoReader.ReadTypedObject (System.Object value, System.Int32 key, ProtoBuf.ProtoReader reader, System.Type type) [0x00056] in <46c30dcdddb14f47b90a4218bec05eb9>:0
at ProtoBuf.ProtoReader.ReadObject (System.Object value, System.Int32 key, ProtoBuf.ProtoReader reader) [0x00000] in <46c30dcdddb14f47b90a4218bec05eb9>:0
at (wrapper dynamic-method) PBConfigList`1[UnitLevel].proto_2(object,ProtoBuf.ProtoReader)
at ProtoBuf.Serializers.CompiledSerializer.ProtoBuf.Serializers.IProtoSerializer.Read (System.Object value, ProtoBuf.ProtoReader source) [0x00000] in <46c30dcdddb14f47b90a4218bec05eb9>:0
at ProtoBuf.Meta.RuntimeTypeModel.Deserialize (System.Int32 key, System.Object value, ProtoBuf.ProtoReader source) [0x00045] in <46c30dcdddb14f47b90a4218bec05eb9>:0
at ProtoBuf.Meta.TypeModel.DeserializeCore (ProtoBuf.ProtoReader reader, System.Type type, System.Object value, System.Boolean noAutoCreate) [0x00015] in <46c30dcdddb14f47b90a4218bec05eb9>:0
at ProtoBuf.Meta.TypeModel.Deserialize (System.IO.Stream source, System.Object value, System.Type type, ProtoBuf.SerializationContext context) [0x00021] in <46c30dcdddb14f47b90a4218bec05eb9>:0
at ProtoBuf.Meta.TypeModel.Deserialize (System.IO.Stream source, System.Object value, System.Type type) [0x00000] in <46c30dcdddb14f47b90a4218bec05eb9>:0
at ProtoBuf.Serializer.Deserialize[T] (System.IO.Stream source) [0x00005] in <46c30dcdddb14f47b90a4218bec05eb9>:0
at ProtoBufUtil.DeSerialize[T] (System.Byte[] msg) [0x0001e] in /Users/janedodge/Documents/ProtobufTest/Assets/ProtoBufUtil.cs:38
UnityEngine.Debug:Log(Object)
Кто-нибудь может мне помочь?