Explorar o código

修复protobuf生成器repeated string int不能生成的问题

tanghai %!s(int64=7) %!d(string=hai) anos
pai
achega
e45f2a4836

+ 3 - 0
Proto/HotfixMessage.proto

@@ -68,4 +68,7 @@ message G2C_PlayerInfo // IResponse
 	string Message = 92;
 	PlayerInfo PlayerInfo = 1;
 	repeated PlayerInfo PlayerInfos = 2;
+    repeated string TestRepeatedString = 3;
+    repeated int32 TestRepeatedInt32 = 4;
+    repeated int64 TestRepeatedInt64 = 5;
 }

+ 1 - 1
Unity/Assets/Scripts/Module/FrameSync/FrameMessage.cs

@@ -182,7 +182,7 @@ namespace ETModel {
 
     public void MergeFrom(pb::CodedInputStream input) {
       frame_ = 0;
-      if (typeof(global::ETModel.OneFrameMessage).IsClass) { for (int i = 0; i < message_.Count; i++) { MessagePool.Instance.Recycle(message_[i]); } }
+      for (int i = 0; i < message_.Count; i++) { MessagePool.Instance.Recycle(message_[i]); }
       message_.Clear();
       rpcId_ = 0;
       actorId_ = 0;

+ 1 - 1
Unity/Assets/Scripts/Module/Message/OuterMessage.cs

@@ -762,7 +762,7 @@ namespace ETModel {
     }
 
     public void MergeFrom(pb::CodedInputStream input) {
-      if (typeof(global::ETModel.UnitInfo).IsClass) { for (int i = 0; i < units_.Count; i++) { MessagePool.Instance.Recycle(units_[i]); } }
+      for (int i = 0; i < units_.Count; i++) { MessagePool.Instance.Recycle(units_[i]); }
       units_.Clear();
       rpcId_ = 0;
       actorId_ = 0;

+ 48 - 1
Unity/Hotfix/Module/Message/HotfixMessage.cs

@@ -767,12 +767,39 @@ namespace ETHotfix {
       set { playerInfos_ = value; }
     }
 
+    private static readonly pb::FieldCodec<string> _repeated_testRepeatedString_codec
+        = pb::FieldCodec.ForString(26);
+    private pbc::RepeatedField<string> testRepeatedString_ = new pbc::RepeatedField<string>();
+    public pbc::RepeatedField<string> TestRepeatedString {
+      get { return testRepeatedString_; }
+      set { testRepeatedString_ = value; }
+    }
+
+    private static readonly pb::FieldCodec<int> _repeated_testRepeatedInt32_codec
+        = pb::FieldCodec.ForInt32(34);
+    private pbc::RepeatedField<int> testRepeatedInt32_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> TestRepeatedInt32 {
+      get { return testRepeatedInt32_; }
+      set { testRepeatedInt32_ = value; }
+    }
+
+    private static readonly pb::FieldCodec<long> _repeated_testRepeatedInt64_codec
+        = pb::FieldCodec.ForInt64(42);
+    private pbc::RepeatedField<long> testRepeatedInt64_ = new pbc::RepeatedField<long>();
+    public pbc::RepeatedField<long> TestRepeatedInt64 {
+      get { return testRepeatedInt64_; }
+      set { testRepeatedInt64_ = value; }
+    }
+
     public void WriteTo(pb::CodedOutputStream output) {
       if (playerInfo_ != null) {
         output.WriteRawTag(10);
         output.WriteMessage(PlayerInfo);
       }
       playerInfos_.WriteTo(output, _repeated_playerInfos_codec);
+      testRepeatedString_.WriteTo(output, _repeated_testRepeatedString_codec);
+      testRepeatedInt32_.WriteTo(output, _repeated_testRepeatedInt32_codec);
+      testRepeatedInt64_.WriteTo(output, _repeated_testRepeatedInt64_codec);
       if (RpcId != 0) {
         output.WriteRawTag(208, 5);
         output.WriteInt32(RpcId);
@@ -802,13 +829,19 @@ namespace ETHotfix {
         size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerInfo);
       }
       size += playerInfos_.CalculateSize(_repeated_playerInfos_codec);
+      size += testRepeatedString_.CalculateSize(_repeated_testRepeatedString_codec);
+      size += testRepeatedInt32_.CalculateSize(_repeated_testRepeatedInt32_codec);
+      size += testRepeatedInt64_.CalculateSize(_repeated_testRepeatedInt64_codec);
       return size;
     }
 
     public void MergeFrom(pb::CodedInputStream input) {
       if (playerInfo_ != null) MessagePool.Instance.Recycle(playerInfo_); playerInfo_ = null;
-      if (typeof(global::ETHotfix.PlayerInfo).IsClass) { for (int i = 0; i < playerInfos_.Count; i++) { MessagePool.Instance.Recycle(playerInfos_[i]); } }
+      for (int i = 0; i < playerInfos_.Count; i++) { MessagePool.Instance.Recycle(playerInfos_[i]); }
       playerInfos_.Clear();
+      testRepeatedString_.Clear();
+      testRepeatedInt32_.Clear();
+      testRepeatedInt64_.Clear();
       rpcId_ = 0;
       error_ = 0;
       message_ = "";
@@ -829,6 +862,20 @@ namespace ETHotfix {
             playerInfos_.AddEntriesFrom(input, _repeated_playerInfos_codec);
             break;
           }
+          case 26: {
+            testRepeatedString_.AddEntriesFrom(input, _repeated_testRepeatedString_codec);
+            break;
+          }
+          case 34:
+          case 32: {
+            testRepeatedInt32_.AddEntriesFrom(input, _repeated_testRepeatedInt32_codec);
+            break;
+          }
+          case 42:
+          case 40: {
+            testRepeatedInt64_.AddEntriesFrom(input, _repeated_testRepeatedInt64_codec);
+            break;
+          }
           case 720: {
             RpcId = input.ReadInt32();
             break;

BIN=BIN
Unity/protoc.exe