Przeglądaj źródła

protobuf MergeFrom 成员是class也需要清空,目前这样处理会产生gc,后期再做优化吧

tanghai 7 lat temu
rodzic
commit
40aad6897c

+ 23 - 0
Unity/Assets/Scripts/Module/Message/OuterMessage.cs

@@ -737,8 +737,20 @@ namespace ETModel {
       set { units_ = value; }
     }
 
+    private global::ETModel.UnitInfo aa_;
+    public global::ETModel.UnitInfo Aa {
+      get { return aa_; }
+      set {
+        aa_ = value;
+      }
+    }
+
     public void WriteTo(pb::CodedOutputStream output) {
       units_.WriteTo(output, _repeated_units_codec);
+      if (aa_ != null) {
+        output.WriteRawTag(18);
+        output.WriteMessage(Aa);
+      }
       if (RpcId != 0) {
         output.WriteRawTag(208, 5);
         output.WriteInt32(RpcId);
@@ -758,11 +770,15 @@ namespace ETModel {
         size += 2 + pb::CodedOutputStream.ComputeInt64Size(ActorId);
       }
       size += units_.CalculateSize(_repeated_units_codec);
+      if (aa_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Aa);
+      }
       return size;
     }
 
     public void MergeFrom(pb::CodedInputStream input) {
       units_.Clear();
+      aa_ = null;
       rpcId_ = 0;
       actorId_ = 0;
       uint tag;
@@ -775,6 +791,13 @@ namespace ETModel {
             units_.AddEntriesFrom(input, _repeated_units_codec);
             break;
           }
+          case 18: {
+            if (aa_ == null) {
+              aa_ = new global::ETModel.UnitInfo();
+            }
+            input.ReadMessage(aa_);
+            break;
+          }
           case 720: {
             RpcId = input.ReadInt32();
             break;

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

@@ -796,6 +796,7 @@ namespace ETHotfix {
     }
 
     public void MergeFrom(pb::CodedInputStream input) {
+      playerInfos_ = null;
       rpcId_ = 0;
       error_ = 0;
       message_ = "";

BIN
Unity/protoc.exe