Просмотр исходного кода

修改proto2cs,生成的消息dispose方法清理字段
消息的list跟map默认会new,因为这样从对象池中拿出来确定不是null,否则有可能null有可能不是null就挺麻烦
再者因为消息用了池,所以相比et7.2不会多产生对象

tanghai 2 лет назад
Родитель
Сommit
0971ff4dae
26 измененных файлов с 2899 добавлено и 697 удалено
  1. 41 13
      Share/Tool/Proto2CS/Proto2CS.cs
  2. 1 1
      Unity/Assets/Resources/GlobalConfig.asset
  3. 11 2
      Unity/Assets/Scripts/Core/Fiber/Module/Actor/ActorSenderComponent.cs
  4. 1 1
      Unity/Assets/Scripts/Hotfix/Client/LockStep/LSClientHelper.cs
  5. 1 1
      Unity/Assets/Scripts/Hotfix/Client/LockStep/LSClientUpdaterSystem.cs
  6. 5 2
      Unity/Assets/Scripts/Hotfix/Server/Demo/Gate/C2G_LoginGateHandler.cs
  7. 4 6
      Unity/Assets/Scripts/Hotfix/Server/Demo/Map/Move/MoveHelper.cs
  8. 1 1
      Unity/Assets/Scripts/Hotfix/Server/Demo/Map/Transfer/TransferHelper.cs
  9. 2 4
      Unity/Assets/Scripts/Hotfix/Server/Demo/Map/Unit/UnitHelper.cs
  10. 3 2
      Unity/Assets/Scripts/Hotfix/Server/Demo/MessageHelper.cs
  11. 1 3
      Unity/Assets/Scripts/Hotfix/Server/Demo/Router/HttpGetRouterHandler.cs
  12. 1 2
      Unity/Assets/Scripts/Hotfix/Server/LockStep/Map/Match2Map_GetRoomHandler.cs
  13. 3 0
      Unity/Assets/Scripts/Hotfix/Server/LockStep/Map/RoomMessageHelper.cs
  14. 3 1
      Unity/Assets/Scripts/Hotfix/Server/LockStep/Match/MatchComponentSystem.cs
  15. 0 1
      Unity/Assets/Scripts/Hotfix/Server/LockStep/Room/G2Room_ReconnectHandler.cs
  16. 1 1
      Unity/Assets/Scripts/Hotfix/Share/Module/Actor/ActorSenderComponentSystem.cs
  17. 160 39
      Unity/Assets/Scripts/Model/Generate/Client/Message/LockStepOuter_C_11001.cs
  18. 484 115
      Unity/Assets/Scripts/Model/Generate/Client/Message/OuterMessage_C_10001.cs
  19. 329 70
      Unity/Assets/Scripts/Model/Generate/ClientServer/Message/InnerMessage_S_20001.cs
  20. 115 27
      Unity/Assets/Scripts/Model/Generate/ClientServer/Message/LockStepInner_S_21001.cs
  21. 160 39
      Unity/Assets/Scripts/Model/Generate/ClientServer/Message/LockStepOuter_C_11001.cs
  22. 484 115
      Unity/Assets/Scripts/Model/Generate/ClientServer/Message/OuterMessage_C_10001.cs
  23. 329 70
      Unity/Assets/Scripts/Model/Generate/Server/Message/InnerMessage_S_20001.cs
  24. 115 27
      Unity/Assets/Scripts/Model/Generate/Server/Message/LockStepInner_S_21001.cs
  25. 160 39
      Unity/Assets/Scripts/Model/Generate/Server/Message/LockStepOuter_C_11001.cs
  26. 484 115
      Unity/Assets/Scripts/Model/Generate/Server/Message/OuterMessage_C_10001.cs

+ 41 - 13
Share/Tool/Proto2CS/Proto2CS.cs

@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using System.IO;
 using System.Text;
+using Microsoft.Extensions.Primitives;
 
 namespace ET
 {
@@ -82,6 +83,7 @@ namespace ET
             
             bool isMsgStart = false;
             string msgName = "";
+            StringBuilder sbDispose = new StringBuilder();
             foreach (string line in s.Split('\n'))
             {
                 string newline = line.Trim();
@@ -108,6 +110,7 @@ namespace ET
                 {
                     string parentClass = "";
                     isMsgStart = true;
+                    
                     msgName = newline.Split(splitChars, StringSplitOptions.RemoveEmptyEntries)[1];
                     string[] ss = newline.Split(new[] { "//" }, StringSplitOptions.RemoveEmptyEntries);
 
@@ -121,6 +124,7 @@ namespace ET
                     sb.Append($"\t[Message({protoName}.{msgName})]\n");
                     sb.Append($"\t[MemoryPackable]\n");
                     sb.Append($"\tpublic partial class {msgName}: MessageObject");
+                    
 
                     if (parentClass == "IActorMessage" || parentClass == "IActorRequest" || parentClass == "IActorResponse")
                     {
@@ -140,18 +144,27 @@ namespace ET
 
                 if (isMsgStart)
                 {
-                    if (newline == "{")
+                    if (newline.StartsWith("{"))
                     {
+                        sbDispose.Clear();
                         sb.Append("\t{\n");
                         
-                        sb.Append($"\t\tpublic static {msgName} Create(bool isFromPool = false) {{ return !isFromPool? new {msgName}() : ObjectPool.Instance.Fetch(typeof({msgName})) as {msgName}; }}\n\n");
-                        sb.Append($"\t\tpublic override void Dispose() {{ ObjectPool.Instance.Recycle(this); }}\n\n");
+                        sb.Append($"\t\tpublic static {msgName} Create(bool isFromPool = true) \n\t\t{{ \n\t\t\treturn !isFromPool? new {msgName}() : ObjectPool.Instance.Fetch(typeof({msgName})) as {msgName}; \n\t\t}}\n\n");
+                        
                         continue;
                     }
 
-                    if (newline == "}")
+                    if (newline.StartsWith("}"))
                     {
                         isMsgStart = false;
+
+                        // 加了no dispose则自己去定义dispose函数,不要自动生成
+                        if (!newline.Contains("// no dispose"))
+                        {
+                            sb.Append(
+                                $"\t\tpublic override void Dispose() \n\t\t{{\n\t\t\tif (!this.IsFromPool) return;\n\t\t\t{sbDispose.ToString()}\n\t\t\tObjectPool.Instance.Recycle(this); \n\t\t}}\n\n");
+                        }
+
                         sb.Append("\t}\n\n");
                         continue;
                     }
@@ -166,15 +179,15 @@ namespace ET
                     {
                         if (newline.StartsWith("map<"))
                         {
-                            Map(sb, ns, newline);
+                            Map(sb, ns, newline, sbDispose);
                         }
                         else if (newline.StartsWith("repeated"))
                         {
-                            Repeated(sb, ns, newline);
+                            Repeated(sb, ns, newline, sbDispose);
                         }
                         else
                         {
-                            Members(sb, newline, true);
+                            Members(sb, newline, true, sbDispose);
                         }
                     }
                 }
@@ -219,7 +232,7 @@ namespace ET
             sw.Write(sb.ToString());
         }
 
-        private static void Map(StringBuilder sb, string ns, string newline)
+        private static void Map(StringBuilder sb, string ns, string newline, StringBuilder sbDispose)
         {
             int start = newline.IndexOf("<") + 1;
             int end = newline.IndexOf(">");
@@ -234,10 +247,12 @@ namespace ET
             
             sb.Append("\t\t[MongoDB.Bson.Serialization.Attributes.BsonDictionaryOptions(MongoDB.Bson.Serialization.Options.DictionaryRepresentation.ArrayOfArrays)]\n");
             sb.Append($"\t\t[MemoryPackOrder({n - 1})]\n");
-            sb.Append($"\t\tpublic Dictionary<{keyType}, {valueType}> {v} {{ get; set; }}\n");
+            sb.Append($"\t\tpublic Dictionary<{keyType}, {valueType}> {v} {{ get; set; }} = new();\n");
+            
+            sbDispose.Append($"this.{v}.Clear();\n\t\t\t");
         }
         
-        private static void Repeated(StringBuilder sb, string ns, string newline)
+        private static void Repeated(StringBuilder sb, string ns, string newline, StringBuilder sbDispose)
         {
             try
             {
@@ -250,7 +265,9 @@ namespace ET
                 int n = int.Parse(ss[4]);
 
                 sb.Append($"\t\t[MemoryPackOrder({n - 1})]\n");
-                sb.Append($"\t\tpublic List<{type}> {name} {{ get; set; }}\n\n");
+                sb.Append($"\t\tpublic List<{type}> {name} {{ get; set; }} = new();\n\n");
+                
+                sbDispose.Append($"this.{name}.Clear();\n\t\t\t");
             }
             catch (Exception e)
             {
@@ -295,7 +312,7 @@ namespace ET
             return typeCs;
         }
 
-        private static void Members(StringBuilder sb, string newline, bool isRequired)
+        private static void Members(StringBuilder sb, string newline, bool isRequired, StringBuilder sbDispose)
         {
             try
             {
@@ -306,9 +323,20 @@ namespace ET
                 string name = ss[1];
                 int n = int.Parse(ss[3]);
                 string typeCs = ConvertType(type);
-
+                
                 sb.Append($"\t\t[MemoryPackOrder({n - 1})]\n");
                 sb.Append($"\t\tpublic {typeCs} {name} {{ get; set; }}\n\n");
+
+                switch (typeCs)
+                {
+                    case "bytes":
+                    {
+                        break;
+                    }
+                    default:
+                        sbDispose.Append($"this.{name} = default;\n\t\t\t");
+                        break;
+                }
             }
             catch (Exception e)
             {

+ 1 - 1
Unity/Assets/Resources/GlobalConfig.asset

@@ -14,4 +14,4 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   CodeMode: 3
   BuildType: 1
-  AppType: 8
+  AppType: 7

+ 11 - 2
Unity/Assets/Scripts/Core/Fiber/Module/Actor/ActorSenderComponent.cs

@@ -4,9 +4,18 @@ namespace ET
 {
     public class A2NetInner_Message: MessageObject, IActorMessage
     {
-        public static A2NetInner_Message Create(bool isFromPool = false) { return !isFromPool? new A2NetInner_Message() : ObjectPool.Instance.Fetch(typeof(A2NetInner_Message)) as A2NetInner_Message; }
+        public static A2NetInner_Message Create()
+        {
+            return ObjectPool.Instance.Fetch(typeof(A2NetInner_Message)) as A2NetInner_Message;
+        }
 
-        public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+        public override void Dispose()
+        {
+            this.FromAddress = default;
+            this.ActorId = default;
+            
+            ObjectPool.Instance.Recycle(this);
+        }
         
         public Address FromAddress;
         public ActorId ActorId;

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/LockStep/LSClientHelper.cs

@@ -63,7 +63,7 @@ namespace ET
                 return;
             }
             long hash = self.FrameBuffer.GetHash(frame);
-            C2Room_CheckHash c2RoomCheckHash = C2Room_CheckHash.Create(true);
+            C2Room_CheckHash c2RoomCheckHash = C2Room_CheckHash.Create();
             c2RoomCheckHash.Frame = frame;
             c2RoomCheckHash.Hash = hash;
             self.Root().GetComponent<SessionComponent>().Session.Send(c2RoomCheckHash);

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/LockStep/LSClientUpdaterSystem.cs

@@ -42,7 +42,7 @@ namespace ET.Client
                 
                 room.SpeedMultiply = ++i;
 
-                FrameMessage frameMessage = FrameMessage.Create(true);
+                FrameMessage frameMessage = FrameMessage.Create();
                 frameMessage.Frame = room.PredictionFrame;
                 frameMessage.Input = self.Input;
                 root.GetComponent<SessionComponent>().Session.Send(frameMessage);

+ 5 - 2
Unity/Assets/Scripts/Hotfix/Server/Demo/Gate/C2G_LoginGateHandler.cs

@@ -59,10 +59,13 @@ namespace ET.Server
             Fiber fiber = player.Fiber();
             await fiber.WaitFrameFinish();
             
-            Room2G_Reconnect room2GateReconnect = await fiber.Root.GetComponent<ActorSenderComponent>().Call(
+            using Room2G_Reconnect room2GateReconnect = await fiber.Root.GetComponent<ActorSenderComponent>().Call(
                 player.GetComponent<PlayerRoomComponent>().RoomActorId,
                 new G2Room_Reconnect() { PlayerId = player.Id }) as Room2G_Reconnect;
-            session.Send(new G2C_Reconnect() { StartTime = room2GateReconnect.StartTime, UnitInfos = room2GateReconnect.UnitInfos, Frame = room2GateReconnect.Frame});
+            G2C_Reconnect g2CReconnect = new() { StartTime = room2GateReconnect.StartTime, Frame = room2GateReconnect.Frame };
+            g2CReconnect.UnitInfos.AddRange(room2GateReconnect.UnitInfos);
+            session.Send(g2CReconnect);
+            
             session.AddComponent<SessionPlayerComponent>().Player = player;
             player.GetComponent<PlayerSessionComponent>().Session = session;
         }

+ 4 - 6
Unity/Assets/Scripts/Hotfix/Server/Demo/Map/Move/MoveHelper.cs

@@ -15,24 +15,22 @@ namespace ET.Server
                 return;
             }
 
-            List<float3> list = new List<float3>();
-            
-            unit.GetComponent<PathfindingComponent>().Find(unit.Position, target, list);
+            M2C_PathfindingResult m2CPathfindingResult = new();
+            unit.GetComponent<PathfindingComponent>().Find(unit.Position, target, m2CPathfindingResult.Points);
 
-            if (list.Count < 2)
+            if (m2CPathfindingResult.Points.Count < 2)
             {
                 unit.SendStop(3);
                 return;
             }
                 
             // 广播寻路路径
-            M2C_PathfindingResult m2CPathfindingResult = new M2C_PathfindingResult() { Points = list };
             m2CPathfindingResult.Id = unit.Id;
             MessageHelper.Broadcast(unit, m2CPathfindingResult);
 
             MoveComponent moveComponent = unit.GetComponent<MoveComponent>();
             
-            bool ret = await moveComponent.MoveToAsync(list, speed);
+            bool ret = await moveComponent.MoveToAsync(m2CPathfindingResult.Points, speed);
             if (ret) // 如果返回false,说明被其它移动取消了,这时候不需要通知客户端stop
             {
                 unit.SendStop(0);

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/Demo/Map/Transfer/TransferHelper.cs

@@ -20,7 +20,7 @@ namespace ET.Server
             // location加锁
             long unitId = unit.Id;
             
-            M2M_UnitTransferRequest request = new() {Entitys = new List<byte[]>()};
+            M2M_UnitTransferRequest request = M2M_UnitTransferRequest.Create();
             request.OldActorId = unit.GetActorId();
             request.Unit = unit.ToBson();
             foreach (Entity entity in unit.Components.Values)

+ 2 - 4
Unity/Assets/Scripts/Hotfix/Server/Demo/Map/Unit/UnitHelper.cs

@@ -9,7 +9,7 @@ namespace ET.Server
     {
         public static UnitInfo CreateUnitInfo(Unit unit)
         {
-            UnitInfo unitInfo = new UnitInfo();
+            UnitInfo unitInfo = new();
             NumericComponent nc = unit.GetComponent<NumericComponent>();
             unitInfo.UnitId = unit.Id;
             unitInfo.ConfigId = unit.ConfigId;
@@ -22,7 +22,7 @@ namespace ET.Server
             {
                 if (!moveComponent.IsArrived())
                 {
-                    unitInfo.MoveInfo = new MoveInfo() { Points = new List<float3>() };
+                    unitInfo.MoveInfo = new MoveInfo();
                     unitInfo.MoveInfo.Points.Add(unit.Position);
                     for (int i = moveComponent.N; i < moveComponent.Targets.Count; ++i)
                     {
@@ -32,8 +32,6 @@ namespace ET.Server
                 }
             }
 
-            unitInfo.KV = new Dictionary<int, long>();
-
             foreach ((int key, long value) in nc.NumericDic)
             {
                 unitInfo.KV.Add(key, value);

+ 3 - 2
Unity/Assets/Scripts/Hotfix/Server/Demo/MessageHelper.cs

@@ -9,20 +9,21 @@ namespace ET.Server
     {
         public static void NoticeUnitAdd(Unit unit, Unit sendUnit)
         {
-            M2C_CreateUnits createUnits = new() { Units = new List<UnitInfo>() };
+            M2C_CreateUnits createUnits = M2C_CreateUnits.Create();
             createUnits.Units.Add(UnitHelper.CreateUnitInfo(sendUnit));
             MessageHelper.SendToClient(unit, createUnits);
         }
         
         public static void NoticeUnitRemove(Unit unit, Unit sendUnit)
         {
-            M2C_RemoveUnits removeUnits = new() {Units = new List<long>()};
+            M2C_RemoveUnits removeUnits = M2C_RemoveUnits.Create();
             removeUnits.Units.Add(sendUnit.Id);
             MessageHelper.SendToClient(unit, removeUnits);
         }
         
         public static void Broadcast(Unit unit, IActorMessage message)
         {
+            (message as MessageObject).IsFromPool = false;
             Dictionary<long, AOIEntity> dict = unit.GetBeSeePlayers();
             // 网络底层做了优化,同一个消息不会多次序列化
             ActorLocationSenderOneType oneTypeLocationType = unit.Root().GetComponent<ActorLocationSenderComponent>().Get(LocationType.GateSession);

+ 1 - 3
Unity/Assets/Scripts/Hotfix/Server/Demo/Router/HttpGetRouterHandler.cs

@@ -10,9 +10,7 @@ namespace ET.Server
     {
         public async ETTask Handle(Scene scene, HttpListenerContext context)
         {
-            HttpGetRouterResponse response = new HttpGetRouterResponse();
-            response.Realms = new List<string>();
-            response.Routers = new List<string>();
+            HttpGetRouterResponse response = new();
             foreach (StartSceneConfig startSceneConfig in StartSceneConfigCategory.Instance.Realms)
             {
                 response.Realms.Add(startSceneConfig.InnerIPOutPort.ToString());

+ 1 - 2
Unity/Assets/Scripts/Hotfix/Server/LockStep/Map/Match2Map_GetRoomHandler.cs

@@ -15,8 +15,7 @@ namespace ET.Server
 			ActorId roomRootActorId = new(fiber.Process, fiberId);
 
 			// 发送消息给房间纤程,初始化
-			RoomManager2Room_Init roomManager2RoomInit = RoomManager2Room_Init.Create(true);
-			roomManager2RoomInit.PlayerIds = new List<long>();
+			RoomManager2Room_Init roomManager2RoomInit = RoomManager2Room_Init.Create();
 			roomManager2RoomInit.PlayerIds.AddRange(request.PlayerIds);
 			await root.GetComponent<ActorSenderComponent>().Call(roomRootActorId, roomManager2RoomInit);
 			

+ 3 - 0
Unity/Assets/Scripts/Hotfix/Server/LockStep/Map/RoomMessageHelper.cs

@@ -5,6 +5,9 @@ namespace ET.Server
     {
         public static void BroadCast(Room room, IActorMessage message)
         {
+            // 广播的消息不能被池回收
+            (message as MessageObject).IsFromPool = false;
+            
             RoomServerComponent roomServerComponent = room.GetComponent<RoomServerComponent>();
 
             ActorLocationSenderComponent actorLocationSenderComponent = room.Root().GetComponent<ActorLocationSenderComponent>();

+ 3 - 1
Unity/Assets/Scripts/Hotfix/Server/LockStep/Match/MatchComponentSystem.cs

@@ -23,11 +23,12 @@ namespace ET.Server
             
             // 申请一个房间
             StartSceneConfig startSceneConfig = RandomGenerator.RandomArray(StartSceneConfigCategory.Instance.Maps);
-            Match2Map_GetRoom match2MapGetRoom = new() {PlayerIds = new List<long>()};
+            Match2Map_GetRoom match2MapGetRoom = new();
             foreach (long id in self.waitMatchPlayers)
             {
                 match2MapGetRoom.PlayerIds.Add(id);
             }
+            
             self.waitMatchPlayers.Clear();
 
             Scene root = self.Root();
@@ -36,6 +37,7 @@ namespace ET.Server
 
             Match2G_NotifyMatchSuccess match2GNotifyMatchSuccess = new() { ActorId = map2MatchGetRoom.ActorId };
             ActorLocationSenderComponent actorLocationSenderComponent = root.GetComponent<ActorLocationSenderComponent>();
+            
             foreach (long id in match2MapGetRoom.PlayerIds) // 这里发送消息线程不会修改PlayerInfo,所以可以直接使用
             {
                 actorLocationSenderComponent.Get(LocationType.Player).Send(id, match2GNotifyMatchSuccess);

+ 0 - 1
Unity/Assets/Scripts/Hotfix/Server/LockStep/Room/G2Room_ReconnectHandler.cs

@@ -9,7 +9,6 @@ namespace ET.Server
         {
             Room room = root.GetComponent<Room>();
             response.StartTime = room.StartTime;
-            response.UnitInfos = new List<LockStepUnitInfo>();
             LSUnitComponent lsUnitComponent = room.LSWorld.GetComponent<LSUnitComponent>();
             foreach (long playerId in room.PlayerIds)
             {

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Share/Module/Actor/ActorSenderComponentSystem.cs

@@ -116,7 +116,7 @@ namespace ET
             }
 
 
-            A2NetInner_Message netInnerMessage = A2NetInner_Message.Create(true);
+            A2NetInner_Message netInnerMessage = A2NetInner_Message.Create();
             netInnerMessage.FromAddress = fiber.Address;
             netInnerMessage.ActorId = actorId;
             netInnerMessage.MessageObject = message;

+ 160 - 39
Unity/Assets/Scripts/Model/Generate/Client/Message/LockStepOuter_C_11001.cs

@@ -8,22 +8,32 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2G_Match: MessageObject, IRequest
 	{
-		public static C2G_Match Create(bool isFromPool = false) { return !isFromPool? new C2G_Match() : ObjectPool.Instance.Fetch(typeof(C2G_Match)) as C2G_Match; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static C2G_Match Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new C2G_Match() : ObjectPool.Instance.Fetch(typeof(C2G_Match)) as C2G_Match; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.G2C_Match)]
 	[MemoryPackable]
 	public partial class G2C_Match: MessageObject, IResponse
 	{
-		public static G2C_Match Create(bool isFromPool = false) { return !isFromPool? new G2C_Match() : ObjectPool.Instance.Fetch(typeof(G2C_Match)) as G2C_Match; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2C_Match Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2C_Match() : ObjectPool.Instance.Fetch(typeof(G2C_Match)) as G2C_Match; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -34,6 +44,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 // 匹配成功,通知客户端切换场景
@@ -41,9 +61,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class Match2G_NotifyMatchSuccess: MessageObject, IActorMessage
 	{
-		public static Match2G_NotifyMatchSuccess Create(bool isFromPool = false) { return !isFromPool? new Match2G_NotifyMatchSuccess() : ObjectPool.Instance.Fetch(typeof(Match2G_NotifyMatchSuccess)) as Match2G_NotifyMatchSuccess; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Match2G_NotifyMatchSuccess Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Match2G_NotifyMatchSuccess() : ObjectPool.Instance.Fetch(typeof(Match2G_NotifyMatchSuccess)) as Match2G_NotifyMatchSuccess; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -52,6 +73,15 @@ namespace ET
 		[MemoryPackOrder(1)]
 		public ActorId ActorId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.ActorId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 // 客户端通知房间切换场景完成
@@ -59,22 +89,32 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2Room_ChangeSceneFinish: MessageObject, IActorRoom
 	{
-		public static C2Room_ChangeSceneFinish Create(bool isFromPool = false) { return !isFromPool? new C2Room_ChangeSceneFinish() : ObjectPool.Instance.Fetch(typeof(C2Room_ChangeSceneFinish)) as C2Room_ChangeSceneFinish; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static C2Room_ChangeSceneFinish Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new C2Room_ChangeSceneFinish() : ObjectPool.Instance.Fetch(typeof(C2Room_ChangeSceneFinish)) as C2Room_ChangeSceneFinish; 
+		}
 
 		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.PlayerId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.LockStepUnitInfo)]
 	[MemoryPackable]
 	public partial class LockStepUnitInfo: MessageObject
 	{
-		public static LockStepUnitInfo Create(bool isFromPool = false) { return !isFromPool? new LockStepUnitInfo() : ObjectPool.Instance.Fetch(typeof(LockStepUnitInfo)) as LockStepUnitInfo; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static LockStepUnitInfo Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new LockStepUnitInfo() : ObjectPool.Instance.Fetch(typeof(LockStepUnitInfo)) as LockStepUnitInfo; 
+		}
 
 		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
@@ -85,6 +125,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public TrueSync.TSQuaternion Rotation { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.PlayerId = default;
+			this.Position = default;
+			this.Rotation = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 // 房间通知客户端进入战斗
@@ -92,15 +142,25 @@ namespace ET
 	[MemoryPackable]
 	public partial class Room2C_Start: MessageObject, IActorMessage
 	{
-		public static Room2C_Start Create(bool isFromPool = false) { return !isFromPool? new Room2C_Start() : ObjectPool.Instance.Fetch(typeof(Room2C_Start)) as Room2C_Start; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Room2C_Start Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Room2C_Start() : ObjectPool.Instance.Fetch(typeof(Room2C_Start)) as Room2C_Start; 
+		}
 
 		[MemoryPackOrder(0)]
 		public long StartTime { get; set; }
 
 		[MemoryPackOrder(1)]
-		public List<LockStepUnitInfo> UnitInfo { get; set; }
+		public List<LockStepUnitInfo> UnitInfo { get; set; } = new();
+
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.StartTime = default;
+			this.UnitInfo.Clear();
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
 
 	}
 
@@ -108,9 +168,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class FrameMessage: MessageObject, IActorMessage
 	{
-		public static FrameMessage Create(bool isFromPool = false) { return !isFromPool? new FrameMessage() : ObjectPool.Instance.Fetch(typeof(FrameMessage)) as FrameMessage; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static FrameMessage Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new FrameMessage() : ObjectPool.Instance.Fetch(typeof(FrameMessage)) as FrameMessage; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int Frame { get; set; }
@@ -121,41 +182,70 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public LSInput Input { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.Frame = default;
+			this.PlayerId = default;
+			this.Input = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.OneFrameInputs)]
 	[MemoryPackable]
 	public partial class OneFrameInputs: MessageObject, IActorMessage
 	{
-		public static OneFrameInputs Create(bool isFromPool = false) { return !isFromPool? new OneFrameInputs() : ObjectPool.Instance.Fetch(typeof(OneFrameInputs)) as OneFrameInputs; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static OneFrameInputs Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new OneFrameInputs() : ObjectPool.Instance.Fetch(typeof(OneFrameInputs)) as OneFrameInputs; 
+		}
 
 		[MongoDB.Bson.Serialization.Attributes.BsonDictionaryOptions(MongoDB.Bson.Serialization.Options.DictionaryRepresentation.ArrayOfArrays)]
 		[MemoryPackOrder(1)]
-		public Dictionary<long, LSInput> Inputs { get; set; }
+		public Dictionary<long, LSInput> Inputs { get; set; } = new();
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.Inputs.Clear();
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.Room2C_AdjustUpdateTime)]
 	[MemoryPackable]
 	public partial class Room2C_AdjustUpdateTime: MessageObject, IActorMessage
 	{
-		public static Room2C_AdjustUpdateTime Create(bool isFromPool = false) { return !isFromPool? new Room2C_AdjustUpdateTime() : ObjectPool.Instance.Fetch(typeof(Room2C_AdjustUpdateTime)) as Room2C_AdjustUpdateTime; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Room2C_AdjustUpdateTime Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Room2C_AdjustUpdateTime() : ObjectPool.Instance.Fetch(typeof(Room2C_AdjustUpdateTime)) as Room2C_AdjustUpdateTime; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int DiffTime { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.DiffTime = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.C2Room_CheckHash)]
 	[MemoryPackable]
 	public partial class C2Room_CheckHash: MessageObject, IActorRoom
 	{
-		public static C2Room_CheckHash Create(bool isFromPool = false) { return !isFromPool? new C2Room_CheckHash() : ObjectPool.Instance.Fetch(typeof(C2Room_CheckHash)) as C2Room_CheckHash; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static C2Room_CheckHash Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new C2Room_CheckHash() : ObjectPool.Instance.Fetch(typeof(C2Room_CheckHash)) as C2Room_CheckHash; 
+		}
 
 		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
@@ -166,15 +256,26 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public long Hash { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.PlayerId = default;
+			this.Frame = default;
+			this.Hash = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.Room2C_CheckHashFail)]
 	[MemoryPackable]
 	public partial class Room2C_CheckHashFail: MessageObject, IActorMessage
 	{
-		public static Room2C_CheckHashFail Create(bool isFromPool = false) { return !isFromPool? new Room2C_CheckHashFail() : ObjectPool.Instance.Fetch(typeof(Room2C_CheckHashFail)) as Room2C_CheckHashFail; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Room2C_CheckHashFail Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Room2C_CheckHashFail() : ObjectPool.Instance.Fetch(typeof(Room2C_CheckHashFail)) as Room2C_CheckHashFail; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int Frame { get; set; }
@@ -182,25 +283,45 @@ namespace ET
 		[MemoryPackOrder(1)]
 		public byte[] LSWorldBytes { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.Frame = default;
+			this.LSWorldBytes = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.G2C_Reconnect)]
 	[MemoryPackable]
 	public partial class G2C_Reconnect: MessageObject, IActorMessage
 	{
-		public static G2C_Reconnect Create(bool isFromPool = false) { return !isFromPool? new G2C_Reconnect() : ObjectPool.Instance.Fetch(typeof(G2C_Reconnect)) as G2C_Reconnect; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2C_Reconnect Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2C_Reconnect() : ObjectPool.Instance.Fetch(typeof(G2C_Reconnect)) as G2C_Reconnect; 
+		}
 
 		[MemoryPackOrder(0)]
 		public long StartTime { get; set; }
 
 		[MemoryPackOrder(1)]
-		public List<LockStepUnitInfo> UnitInfos { get; set; }
+		public List<LockStepUnitInfo> UnitInfos { get; set; } = new();
 
 		[MemoryPackOrder(2)]
 		public int Frame { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.StartTime = default;
+			this.UnitInfos.Clear();
+			this.Frame = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	public static class LockStepOuter

Разница между файлами не показана из-за своего большого размера
+ 484 - 115
Unity/Assets/Scripts/Model/Generate/Client/Message/OuterMessage_C_10001.cs


+ 329 - 70
Unity/Assets/Scripts/Model/Generate/ClientServer/Message/InnerMessage_S_20001.cs

@@ -9,9 +9,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectQueryRequest: MessageObject, IActorRequest
 	{
-		public static ObjectQueryRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectQueryRequest() : ObjectPool.Instance.Fetch(typeof(ObjectQueryRequest)) as ObjectQueryRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectQueryRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectQueryRequest() : ObjectPool.Instance.Fetch(typeof(ObjectQueryRequest)) as ObjectQueryRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -22,6 +23,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public long InstanceId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Key = default;
+			this.InstanceId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(A2M_Reload))]
@@ -29,22 +40,32 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2A_Reload: MessageObject, IActorRequest
 	{
-		public static M2A_Reload Create(bool isFromPool = false) { return !isFromPool? new M2A_Reload() : ObjectPool.Instance.Fetch(typeof(M2A_Reload)) as M2A_Reload; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static M2A_Reload Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new M2A_Reload() : ObjectPool.Instance.Fetch(typeof(M2A_Reload)) as M2A_Reload; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.A2M_Reload)]
 	[MemoryPackable]
 	public partial class A2M_Reload: MessageObject, IActorResponse
 	{
-		public static A2M_Reload Create(bool isFromPool = false) { return !isFromPool? new A2M_Reload() : ObjectPool.Instance.Fetch(typeof(A2M_Reload)) as A2M_Reload; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static A2M_Reload Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new A2M_Reload() : ObjectPool.Instance.Fetch(typeof(A2M_Reload)) as A2M_Reload; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -55,6 +76,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(G2G_LockResponse))]
@@ -62,9 +93,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2G_LockRequest: MessageObject, IActorRequest
 	{
-		public static G2G_LockRequest Create(bool isFromPool = false) { return !isFromPool? new G2G_LockRequest() : ObjectPool.Instance.Fetch(typeof(G2G_LockRequest)) as G2G_LockRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2G_LockRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2G_LockRequest() : ObjectPool.Instance.Fetch(typeof(G2G_LockRequest)) as G2G_LockRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -75,15 +107,26 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Address { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Id = default;
+			this.Address = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.G2G_LockResponse)]
 	[MemoryPackable]
 	public partial class G2G_LockResponse: MessageObject, IActorResponse
 	{
-		public static G2G_LockResponse Create(bool isFromPool = false) { return !isFromPool? new G2G_LockResponse() : ObjectPool.Instance.Fetch(typeof(G2G_LockResponse)) as G2G_LockResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2G_LockResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2G_LockResponse() : ObjectPool.Instance.Fetch(typeof(G2G_LockResponse)) as G2G_LockResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -94,6 +137,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(G2G_LockReleaseResponse))]
@@ -101,9 +154,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2G_LockReleaseRequest: MessageObject, IActorRequest
 	{
-		public static G2G_LockReleaseRequest Create(bool isFromPool = false) { return !isFromPool? new G2G_LockReleaseRequest() : ObjectPool.Instance.Fetch(typeof(G2G_LockReleaseRequest)) as G2G_LockReleaseRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2G_LockReleaseRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2G_LockReleaseRequest() : ObjectPool.Instance.Fetch(typeof(G2G_LockReleaseRequest)) as G2G_LockReleaseRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -114,15 +168,26 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Address { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Id = default;
+			this.Address = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.G2G_LockReleaseResponse)]
 	[MemoryPackable]
 	public partial class G2G_LockReleaseResponse: MessageObject, IActorResponse
 	{
-		public static G2G_LockReleaseResponse Create(bool isFromPool = false) { return !isFromPool? new G2G_LockReleaseResponse() : ObjectPool.Instance.Fetch(typeof(G2G_LockReleaseResponse)) as G2G_LockReleaseResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2G_LockReleaseResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2G_LockReleaseResponse() : ObjectPool.Instance.Fetch(typeof(G2G_LockReleaseResponse)) as G2G_LockReleaseResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -133,6 +198,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(ObjectAddResponse))]
@@ -140,9 +215,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectAddRequest: MessageObject, IActorRequest
 	{
-		public static ObjectAddRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectAddRequest() : ObjectPool.Instance.Fetch(typeof(ObjectAddRequest)) as ObjectAddRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectAddRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectAddRequest() : ObjectPool.Instance.Fetch(typeof(ObjectAddRequest)) as ObjectAddRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -156,15 +232,27 @@ namespace ET
 		[MemoryPackOrder(3)]
 		public ActorId ActorId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Type = default;
+			this.Key = default;
+			this.ActorId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.ObjectAddResponse)]
 	[MemoryPackable]
 	public partial class ObjectAddResponse: MessageObject, IActorResponse
 	{
-		public static ObjectAddResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectAddResponse() : ObjectPool.Instance.Fetch(typeof(ObjectAddResponse)) as ObjectAddResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectAddResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectAddResponse() : ObjectPool.Instance.Fetch(typeof(ObjectAddResponse)) as ObjectAddResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -175,6 +263,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(ObjectLockResponse))]
@@ -182,9 +280,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectLockRequest: MessageObject, IActorRequest
 	{
-		public static ObjectLockRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectLockRequest() : ObjectPool.Instance.Fetch(typeof(ObjectLockRequest)) as ObjectLockRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectLockRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectLockRequest() : ObjectPool.Instance.Fetch(typeof(ObjectLockRequest)) as ObjectLockRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -201,15 +300,28 @@ namespace ET
 		[MemoryPackOrder(4)]
 		public int Time { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Type = default;
+			this.Key = default;
+			this.ActorId = default;
+			this.Time = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.ObjectLockResponse)]
 	[MemoryPackable]
 	public partial class ObjectLockResponse: MessageObject, IActorResponse
 	{
-		public static ObjectLockResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectLockResponse() : ObjectPool.Instance.Fetch(typeof(ObjectLockResponse)) as ObjectLockResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectLockResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectLockResponse() : ObjectPool.Instance.Fetch(typeof(ObjectLockResponse)) as ObjectLockResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -220,6 +332,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(ObjectUnLockResponse))]
@@ -227,9 +349,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectUnLockRequest: MessageObject, IActorRequest
 	{
-		public static ObjectUnLockRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectUnLockRequest() : ObjectPool.Instance.Fetch(typeof(ObjectUnLockRequest)) as ObjectUnLockRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectUnLockRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectUnLockRequest() : ObjectPool.Instance.Fetch(typeof(ObjectUnLockRequest)) as ObjectUnLockRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -246,15 +369,28 @@ namespace ET
 		[MemoryPackOrder(4)]
 		public ActorId NewActorId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Type = default;
+			this.Key = default;
+			this.OldActorId = default;
+			this.NewActorId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.ObjectUnLockResponse)]
 	[MemoryPackable]
 	public partial class ObjectUnLockResponse: MessageObject, IActorResponse
 	{
-		public static ObjectUnLockResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectUnLockResponse() : ObjectPool.Instance.Fetch(typeof(ObjectUnLockResponse)) as ObjectUnLockResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectUnLockResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectUnLockResponse() : ObjectPool.Instance.Fetch(typeof(ObjectUnLockResponse)) as ObjectUnLockResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -265,6 +401,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(ObjectRemoveResponse))]
@@ -272,9 +418,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectRemoveRequest: MessageObject, IActorRequest
 	{
-		public static ObjectRemoveRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectRemoveRequest() : ObjectPool.Instance.Fetch(typeof(ObjectRemoveRequest)) as ObjectRemoveRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectRemoveRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectRemoveRequest() : ObjectPool.Instance.Fetch(typeof(ObjectRemoveRequest)) as ObjectRemoveRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -285,15 +432,26 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public long Key { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Type = default;
+			this.Key = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.ObjectRemoveResponse)]
 	[MemoryPackable]
 	public partial class ObjectRemoveResponse: MessageObject, IActorResponse
 	{
-		public static ObjectRemoveResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectRemoveResponse() : ObjectPool.Instance.Fetch(typeof(ObjectRemoveResponse)) as ObjectRemoveResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectRemoveResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectRemoveResponse() : ObjectPool.Instance.Fetch(typeof(ObjectRemoveResponse)) as ObjectRemoveResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -304,6 +462,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(ObjectGetResponse))]
@@ -311,9 +479,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectGetRequest: MessageObject, IActorRequest
 	{
-		public static ObjectGetRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectGetRequest() : ObjectPool.Instance.Fetch(typeof(ObjectGetRequest)) as ObjectGetRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectGetRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectGetRequest() : ObjectPool.Instance.Fetch(typeof(ObjectGetRequest)) as ObjectGetRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -324,15 +493,26 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public long Key { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Type = default;
+			this.Key = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.ObjectGetResponse)]
 	[MemoryPackable]
 	public partial class ObjectGetResponse: MessageObject, IActorResponse
 	{
-		public static ObjectGetResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectGetResponse() : ObjectPool.Instance.Fetch(typeof(ObjectGetResponse)) as ObjectGetResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectGetResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectGetResponse() : ObjectPool.Instance.Fetch(typeof(ObjectGetResponse)) as ObjectGetResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -349,6 +529,18 @@ namespace ET
 		[MemoryPackOrder(4)]
 		public ActorId ActorId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			this.Type = default;
+			this.ActorId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(G2R_GetLoginKey))]
@@ -356,9 +548,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class R2G_GetLoginKey: MessageObject, IActorRequest
 	{
-		public static R2G_GetLoginKey Create(bool isFromPool = false) { return !isFromPool? new R2G_GetLoginKey() : ObjectPool.Instance.Fetch(typeof(R2G_GetLoginKey)) as R2G_GetLoginKey; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static R2G_GetLoginKey Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new R2G_GetLoginKey() : ObjectPool.Instance.Fetch(typeof(R2G_GetLoginKey)) as R2G_GetLoginKey; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -366,15 +559,25 @@ namespace ET
 		[MemoryPackOrder(1)]
 		public string Account { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Account = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.G2R_GetLoginKey)]
 	[MemoryPackable]
 	public partial class G2R_GetLoginKey: MessageObject, IActorResponse
 	{
-		public static G2R_GetLoginKey Create(bool isFromPool = false) { return !isFromPool? new G2R_GetLoginKey() : ObjectPool.Instance.Fetch(typeof(G2R_GetLoginKey)) as G2R_GetLoginKey; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2R_GetLoginKey Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2R_GetLoginKey() : ObjectPool.Instance.Fetch(typeof(G2R_GetLoginKey)) as G2R_GetLoginKey; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -391,28 +594,50 @@ namespace ET
 		[MemoryPackOrder(4)]
 		public long GateId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			this.Key = default;
+			this.GateId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.G2M_SessionDisconnect)]
 	[MemoryPackable]
 	public partial class G2M_SessionDisconnect: MessageObject, IActorLocationMessage
 	{
-		public static G2M_SessionDisconnect Create(bool isFromPool = false) { return !isFromPool? new G2M_SessionDisconnect() : ObjectPool.Instance.Fetch(typeof(G2M_SessionDisconnect)) as G2M_SessionDisconnect; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2M_SessionDisconnect Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2M_SessionDisconnect() : ObjectPool.Instance.Fetch(typeof(G2M_SessionDisconnect)) as G2M_SessionDisconnect; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.ObjectQueryResponse)]
 	[MemoryPackable]
 	public partial class ObjectQueryResponse: MessageObject, IActorResponse
 	{
-		public static ObjectQueryResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectQueryResponse() : ObjectPool.Instance.Fetch(typeof(ObjectQueryResponse)) as ObjectQueryResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectQueryResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectQueryResponse() : ObjectPool.Instance.Fetch(typeof(ObjectQueryResponse)) as ObjectQueryResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -426,6 +651,17 @@ namespace ET
 		[MemoryPackOrder(3)]
 		public byte[] Entity { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			this.Entity = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(M2M_UnitTransferResponse))]
@@ -433,9 +669,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2M_UnitTransferRequest: MessageObject, IActorRequest
 	{
-		public static M2M_UnitTransferRequest Create(bool isFromPool = false) { return !isFromPool? new M2M_UnitTransferRequest() : ObjectPool.Instance.Fetch(typeof(M2M_UnitTransferRequest)) as M2M_UnitTransferRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static M2M_UnitTransferRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new M2M_UnitTransferRequest() : ObjectPool.Instance.Fetch(typeof(M2M_UnitTransferRequest)) as M2M_UnitTransferRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -447,7 +684,18 @@ namespace ET
 		public byte[] Unit { get; set; }
 
 		[MemoryPackOrder(3)]
-		public List<byte[]> Entitys { get; set; }
+		public List<byte[]> Entitys { get; set; } = new();
+
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.OldActorId = default;
+			this.Unit = default;
+			this.Entitys.Clear();
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
 
 	}
 
@@ -455,9 +703,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2M_UnitTransferResponse: MessageObject, IActorResponse
 	{
-		public static M2M_UnitTransferResponse Create(bool isFromPool = false) { return !isFromPool? new M2M_UnitTransferResponse() : ObjectPool.Instance.Fetch(typeof(M2M_UnitTransferResponse)) as M2M_UnitTransferResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static M2M_UnitTransferResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new M2M_UnitTransferResponse() : ObjectPool.Instance.Fetch(typeof(M2M_UnitTransferResponse)) as M2M_UnitTransferResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -468,6 +717,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	public static class InnerMessage

+ 115 - 27
Unity/Assets/Scripts/Model/Generate/ClientServer/Message/LockStepInner_S_21001.cs

@@ -9,9 +9,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2Match_Match: MessageObject, IActorRequest
 	{
-		public static G2Match_Match Create(bool isFromPool = false) { return !isFromPool? new G2Match_Match() : ObjectPool.Instance.Fetch(typeof(G2Match_Match)) as G2Match_Match; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2Match_Match Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2Match_Match() : ObjectPool.Instance.Fetch(typeof(G2Match_Match)) as G2Match_Match; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -19,15 +20,25 @@ namespace ET
 		[MemoryPackOrder(1)]
 		public long Id { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Id = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepInner.Match2G_Match)]
 	[MemoryPackable]
 	public partial class Match2G_Match: MessageObject, IActorResponse
 	{
-		public static Match2G_Match Create(bool isFromPool = false) { return !isFromPool? new Match2G_Match() : ObjectPool.Instance.Fetch(typeof(Match2G_Match)) as Match2G_Match; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Match2G_Match Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Match2G_Match() : ObjectPool.Instance.Fetch(typeof(Match2G_Match)) as Match2G_Match; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -38,6 +49,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(Map2Match_GetRoom))]
@@ -45,15 +66,25 @@ namespace ET
 	[MemoryPackable]
 	public partial class Match2Map_GetRoom: MessageObject, IActorRequest
 	{
-		public static Match2Map_GetRoom Create(bool isFromPool = false) { return !isFromPool? new Match2Map_GetRoom() : ObjectPool.Instance.Fetch(typeof(Match2Map_GetRoom)) as Match2Map_GetRoom; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Match2Map_GetRoom Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Match2Map_GetRoom() : ObjectPool.Instance.Fetch(typeof(Match2Map_GetRoom)) as Match2Map_GetRoom; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 		[MemoryPackOrder(1)]
-		public List<long> PlayerIds { get; set; }
+		public List<long> PlayerIds { get; set; } = new();
+
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.PlayerIds.Clear();
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
 
 	}
 
@@ -61,9 +92,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class Map2Match_GetRoom: MessageObject, IActorResponse
 	{
-		public static Map2Match_GetRoom Create(bool isFromPool = false) { return !isFromPool? new Map2Match_GetRoom() : ObjectPool.Instance.Fetch(typeof(Map2Match_GetRoom)) as Map2Match_GetRoom; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Map2Match_GetRoom Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Map2Match_GetRoom() : ObjectPool.Instance.Fetch(typeof(Map2Match_GetRoom)) as Map2Match_GetRoom; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -78,6 +110,17 @@ namespace ET
 		[MemoryPackOrder(3)]
 		public ActorId ActorId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			this.ActorId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(Room2G_Reconnect))]
@@ -85,9 +128,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2Room_Reconnect: MessageObject, IActorRequest
 	{
-		public static G2Room_Reconnect Create(bool isFromPool = false) { return !isFromPool? new G2Room_Reconnect() : ObjectPool.Instance.Fetch(typeof(G2Room_Reconnect)) as G2Room_Reconnect; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2Room_Reconnect Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2Room_Reconnect() : ObjectPool.Instance.Fetch(typeof(G2Room_Reconnect)) as G2Room_Reconnect; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -95,15 +139,25 @@ namespace ET
 		[MemoryPackOrder(1)]
 		public long PlayerId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.PlayerId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepInner.Room2G_Reconnect)]
 	[MemoryPackable]
 	public partial class Room2G_Reconnect: MessageObject, IActorResponse
 	{
-		public static Room2G_Reconnect Create(bool isFromPool = false) { return !isFromPool? new Room2G_Reconnect() : ObjectPool.Instance.Fetch(typeof(Room2G_Reconnect)) as Room2G_Reconnect; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Room2G_Reconnect Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Room2G_Reconnect() : ObjectPool.Instance.Fetch(typeof(Room2G_Reconnect)) as Room2G_Reconnect; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -118,11 +172,24 @@ namespace ET
 		public long StartTime { get; set; }
 
 		[MemoryPackOrder(4)]
-		public List<LockStepUnitInfo> UnitInfos { get; set; }
+		public List<LockStepUnitInfo> UnitInfos { get; set; } = new();
 
 		[MemoryPackOrder(5)]
 		public int Frame { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			this.StartTime = default;
+			this.UnitInfos.Clear();
+			this.Frame = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(Room2RoomManager_Init))]
@@ -130,15 +197,25 @@ namespace ET
 	[MemoryPackable]
 	public partial class RoomManager2Room_Init: MessageObject, IActorRequest
 	{
-		public static RoomManager2Room_Init Create(bool isFromPool = false) { return !isFromPool? new RoomManager2Room_Init() : ObjectPool.Instance.Fetch(typeof(RoomManager2Room_Init)) as RoomManager2Room_Init; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static RoomManager2Room_Init Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new RoomManager2Room_Init() : ObjectPool.Instance.Fetch(typeof(RoomManager2Room_Init)) as RoomManager2Room_Init; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 		[MemoryPackOrder(1)]
-		public List<long> PlayerIds { get; set; }
+		public List<long> PlayerIds { get; set; } = new();
+
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.PlayerIds.Clear();
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
 
 	}
 
@@ -146,9 +223,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class Room2RoomManager_Init: MessageObject, IActorResponse
 	{
-		public static Room2RoomManager_Init Create(bool isFromPool = false) { return !isFromPool? new Room2RoomManager_Init() : ObjectPool.Instance.Fetch(typeof(Room2RoomManager_Init)) as Room2RoomManager_Init; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Room2RoomManager_Init Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Room2RoomManager_Init() : ObjectPool.Instance.Fetch(typeof(Room2RoomManager_Init)) as Room2RoomManager_Init; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -159,6 +237,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	public static class LockStepInner

+ 160 - 39
Unity/Assets/Scripts/Model/Generate/ClientServer/Message/LockStepOuter_C_11001.cs

@@ -8,22 +8,32 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2G_Match: MessageObject, IRequest
 	{
-		public static C2G_Match Create(bool isFromPool = false) { return !isFromPool? new C2G_Match() : ObjectPool.Instance.Fetch(typeof(C2G_Match)) as C2G_Match; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static C2G_Match Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new C2G_Match() : ObjectPool.Instance.Fetch(typeof(C2G_Match)) as C2G_Match; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.G2C_Match)]
 	[MemoryPackable]
 	public partial class G2C_Match: MessageObject, IResponse
 	{
-		public static G2C_Match Create(bool isFromPool = false) { return !isFromPool? new G2C_Match() : ObjectPool.Instance.Fetch(typeof(G2C_Match)) as G2C_Match; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2C_Match Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2C_Match() : ObjectPool.Instance.Fetch(typeof(G2C_Match)) as G2C_Match; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -34,6 +44,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 // 匹配成功,通知客户端切换场景
@@ -41,9 +61,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class Match2G_NotifyMatchSuccess: MessageObject, IActorMessage
 	{
-		public static Match2G_NotifyMatchSuccess Create(bool isFromPool = false) { return !isFromPool? new Match2G_NotifyMatchSuccess() : ObjectPool.Instance.Fetch(typeof(Match2G_NotifyMatchSuccess)) as Match2G_NotifyMatchSuccess; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Match2G_NotifyMatchSuccess Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Match2G_NotifyMatchSuccess() : ObjectPool.Instance.Fetch(typeof(Match2G_NotifyMatchSuccess)) as Match2G_NotifyMatchSuccess; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -52,6 +73,15 @@ namespace ET
 		[MemoryPackOrder(1)]
 		public ActorId ActorId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.ActorId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 // 客户端通知房间切换场景完成
@@ -59,22 +89,32 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2Room_ChangeSceneFinish: MessageObject, IActorRoom
 	{
-		public static C2Room_ChangeSceneFinish Create(bool isFromPool = false) { return !isFromPool? new C2Room_ChangeSceneFinish() : ObjectPool.Instance.Fetch(typeof(C2Room_ChangeSceneFinish)) as C2Room_ChangeSceneFinish; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static C2Room_ChangeSceneFinish Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new C2Room_ChangeSceneFinish() : ObjectPool.Instance.Fetch(typeof(C2Room_ChangeSceneFinish)) as C2Room_ChangeSceneFinish; 
+		}
 
 		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.PlayerId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.LockStepUnitInfo)]
 	[MemoryPackable]
 	public partial class LockStepUnitInfo: MessageObject
 	{
-		public static LockStepUnitInfo Create(bool isFromPool = false) { return !isFromPool? new LockStepUnitInfo() : ObjectPool.Instance.Fetch(typeof(LockStepUnitInfo)) as LockStepUnitInfo; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static LockStepUnitInfo Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new LockStepUnitInfo() : ObjectPool.Instance.Fetch(typeof(LockStepUnitInfo)) as LockStepUnitInfo; 
+		}
 
 		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
@@ -85,6 +125,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public TrueSync.TSQuaternion Rotation { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.PlayerId = default;
+			this.Position = default;
+			this.Rotation = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 // 房间通知客户端进入战斗
@@ -92,15 +142,25 @@ namespace ET
 	[MemoryPackable]
 	public partial class Room2C_Start: MessageObject, IActorMessage
 	{
-		public static Room2C_Start Create(bool isFromPool = false) { return !isFromPool? new Room2C_Start() : ObjectPool.Instance.Fetch(typeof(Room2C_Start)) as Room2C_Start; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Room2C_Start Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Room2C_Start() : ObjectPool.Instance.Fetch(typeof(Room2C_Start)) as Room2C_Start; 
+		}
 
 		[MemoryPackOrder(0)]
 		public long StartTime { get; set; }
 
 		[MemoryPackOrder(1)]
-		public List<LockStepUnitInfo> UnitInfo { get; set; }
+		public List<LockStepUnitInfo> UnitInfo { get; set; } = new();
+
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.StartTime = default;
+			this.UnitInfo.Clear();
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
 
 	}
 
@@ -108,9 +168,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class FrameMessage: MessageObject, IActorMessage
 	{
-		public static FrameMessage Create(bool isFromPool = false) { return !isFromPool? new FrameMessage() : ObjectPool.Instance.Fetch(typeof(FrameMessage)) as FrameMessage; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static FrameMessage Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new FrameMessage() : ObjectPool.Instance.Fetch(typeof(FrameMessage)) as FrameMessage; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int Frame { get; set; }
@@ -121,41 +182,70 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public LSInput Input { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.Frame = default;
+			this.PlayerId = default;
+			this.Input = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.OneFrameInputs)]
 	[MemoryPackable]
 	public partial class OneFrameInputs: MessageObject, IActorMessage
 	{
-		public static OneFrameInputs Create(bool isFromPool = false) { return !isFromPool? new OneFrameInputs() : ObjectPool.Instance.Fetch(typeof(OneFrameInputs)) as OneFrameInputs; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static OneFrameInputs Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new OneFrameInputs() : ObjectPool.Instance.Fetch(typeof(OneFrameInputs)) as OneFrameInputs; 
+		}
 
 		[MongoDB.Bson.Serialization.Attributes.BsonDictionaryOptions(MongoDB.Bson.Serialization.Options.DictionaryRepresentation.ArrayOfArrays)]
 		[MemoryPackOrder(1)]
-		public Dictionary<long, LSInput> Inputs { get; set; }
+		public Dictionary<long, LSInput> Inputs { get; set; } = new();
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.Inputs.Clear();
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.Room2C_AdjustUpdateTime)]
 	[MemoryPackable]
 	public partial class Room2C_AdjustUpdateTime: MessageObject, IActorMessage
 	{
-		public static Room2C_AdjustUpdateTime Create(bool isFromPool = false) { return !isFromPool? new Room2C_AdjustUpdateTime() : ObjectPool.Instance.Fetch(typeof(Room2C_AdjustUpdateTime)) as Room2C_AdjustUpdateTime; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Room2C_AdjustUpdateTime Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Room2C_AdjustUpdateTime() : ObjectPool.Instance.Fetch(typeof(Room2C_AdjustUpdateTime)) as Room2C_AdjustUpdateTime; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int DiffTime { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.DiffTime = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.C2Room_CheckHash)]
 	[MemoryPackable]
 	public partial class C2Room_CheckHash: MessageObject, IActorRoom
 	{
-		public static C2Room_CheckHash Create(bool isFromPool = false) { return !isFromPool? new C2Room_CheckHash() : ObjectPool.Instance.Fetch(typeof(C2Room_CheckHash)) as C2Room_CheckHash; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static C2Room_CheckHash Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new C2Room_CheckHash() : ObjectPool.Instance.Fetch(typeof(C2Room_CheckHash)) as C2Room_CheckHash; 
+		}
 
 		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
@@ -166,15 +256,26 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public long Hash { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.PlayerId = default;
+			this.Frame = default;
+			this.Hash = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.Room2C_CheckHashFail)]
 	[MemoryPackable]
 	public partial class Room2C_CheckHashFail: MessageObject, IActorMessage
 	{
-		public static Room2C_CheckHashFail Create(bool isFromPool = false) { return !isFromPool? new Room2C_CheckHashFail() : ObjectPool.Instance.Fetch(typeof(Room2C_CheckHashFail)) as Room2C_CheckHashFail; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Room2C_CheckHashFail Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Room2C_CheckHashFail() : ObjectPool.Instance.Fetch(typeof(Room2C_CheckHashFail)) as Room2C_CheckHashFail; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int Frame { get; set; }
@@ -182,25 +283,45 @@ namespace ET
 		[MemoryPackOrder(1)]
 		public byte[] LSWorldBytes { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.Frame = default;
+			this.LSWorldBytes = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.G2C_Reconnect)]
 	[MemoryPackable]
 	public partial class G2C_Reconnect: MessageObject, IActorMessage
 	{
-		public static G2C_Reconnect Create(bool isFromPool = false) { return !isFromPool? new G2C_Reconnect() : ObjectPool.Instance.Fetch(typeof(G2C_Reconnect)) as G2C_Reconnect; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2C_Reconnect Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2C_Reconnect() : ObjectPool.Instance.Fetch(typeof(G2C_Reconnect)) as G2C_Reconnect; 
+		}
 
 		[MemoryPackOrder(0)]
 		public long StartTime { get; set; }
 
 		[MemoryPackOrder(1)]
-		public List<LockStepUnitInfo> UnitInfos { get; set; }
+		public List<LockStepUnitInfo> UnitInfos { get; set; } = new();
 
 		[MemoryPackOrder(2)]
 		public int Frame { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.StartTime = default;
+			this.UnitInfos.Clear();
+			this.Frame = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	public static class LockStepOuter

Разница между файлами не показана из-за своего большого размера
+ 484 - 115
Unity/Assets/Scripts/Model/Generate/ClientServer/Message/OuterMessage_C_10001.cs


+ 329 - 70
Unity/Assets/Scripts/Model/Generate/Server/Message/InnerMessage_S_20001.cs

@@ -9,9 +9,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectQueryRequest: MessageObject, IActorRequest
 	{
-		public static ObjectQueryRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectQueryRequest() : ObjectPool.Instance.Fetch(typeof(ObjectQueryRequest)) as ObjectQueryRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectQueryRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectQueryRequest() : ObjectPool.Instance.Fetch(typeof(ObjectQueryRequest)) as ObjectQueryRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -22,6 +23,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public long InstanceId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Key = default;
+			this.InstanceId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(A2M_Reload))]
@@ -29,22 +40,32 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2A_Reload: MessageObject, IActorRequest
 	{
-		public static M2A_Reload Create(bool isFromPool = false) { return !isFromPool? new M2A_Reload() : ObjectPool.Instance.Fetch(typeof(M2A_Reload)) as M2A_Reload; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static M2A_Reload Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new M2A_Reload() : ObjectPool.Instance.Fetch(typeof(M2A_Reload)) as M2A_Reload; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.A2M_Reload)]
 	[MemoryPackable]
 	public partial class A2M_Reload: MessageObject, IActorResponse
 	{
-		public static A2M_Reload Create(bool isFromPool = false) { return !isFromPool? new A2M_Reload() : ObjectPool.Instance.Fetch(typeof(A2M_Reload)) as A2M_Reload; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static A2M_Reload Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new A2M_Reload() : ObjectPool.Instance.Fetch(typeof(A2M_Reload)) as A2M_Reload; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -55,6 +76,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(G2G_LockResponse))]
@@ -62,9 +93,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2G_LockRequest: MessageObject, IActorRequest
 	{
-		public static G2G_LockRequest Create(bool isFromPool = false) { return !isFromPool? new G2G_LockRequest() : ObjectPool.Instance.Fetch(typeof(G2G_LockRequest)) as G2G_LockRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2G_LockRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2G_LockRequest() : ObjectPool.Instance.Fetch(typeof(G2G_LockRequest)) as G2G_LockRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -75,15 +107,26 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Address { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Id = default;
+			this.Address = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.G2G_LockResponse)]
 	[MemoryPackable]
 	public partial class G2G_LockResponse: MessageObject, IActorResponse
 	{
-		public static G2G_LockResponse Create(bool isFromPool = false) { return !isFromPool? new G2G_LockResponse() : ObjectPool.Instance.Fetch(typeof(G2G_LockResponse)) as G2G_LockResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2G_LockResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2G_LockResponse() : ObjectPool.Instance.Fetch(typeof(G2G_LockResponse)) as G2G_LockResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -94,6 +137,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(G2G_LockReleaseResponse))]
@@ -101,9 +154,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2G_LockReleaseRequest: MessageObject, IActorRequest
 	{
-		public static G2G_LockReleaseRequest Create(bool isFromPool = false) { return !isFromPool? new G2G_LockReleaseRequest() : ObjectPool.Instance.Fetch(typeof(G2G_LockReleaseRequest)) as G2G_LockReleaseRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2G_LockReleaseRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2G_LockReleaseRequest() : ObjectPool.Instance.Fetch(typeof(G2G_LockReleaseRequest)) as G2G_LockReleaseRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -114,15 +168,26 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Address { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Id = default;
+			this.Address = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.G2G_LockReleaseResponse)]
 	[MemoryPackable]
 	public partial class G2G_LockReleaseResponse: MessageObject, IActorResponse
 	{
-		public static G2G_LockReleaseResponse Create(bool isFromPool = false) { return !isFromPool? new G2G_LockReleaseResponse() : ObjectPool.Instance.Fetch(typeof(G2G_LockReleaseResponse)) as G2G_LockReleaseResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2G_LockReleaseResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2G_LockReleaseResponse() : ObjectPool.Instance.Fetch(typeof(G2G_LockReleaseResponse)) as G2G_LockReleaseResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -133,6 +198,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(ObjectAddResponse))]
@@ -140,9 +215,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectAddRequest: MessageObject, IActorRequest
 	{
-		public static ObjectAddRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectAddRequest() : ObjectPool.Instance.Fetch(typeof(ObjectAddRequest)) as ObjectAddRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectAddRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectAddRequest() : ObjectPool.Instance.Fetch(typeof(ObjectAddRequest)) as ObjectAddRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -156,15 +232,27 @@ namespace ET
 		[MemoryPackOrder(3)]
 		public ActorId ActorId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Type = default;
+			this.Key = default;
+			this.ActorId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.ObjectAddResponse)]
 	[MemoryPackable]
 	public partial class ObjectAddResponse: MessageObject, IActorResponse
 	{
-		public static ObjectAddResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectAddResponse() : ObjectPool.Instance.Fetch(typeof(ObjectAddResponse)) as ObjectAddResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectAddResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectAddResponse() : ObjectPool.Instance.Fetch(typeof(ObjectAddResponse)) as ObjectAddResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -175,6 +263,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(ObjectLockResponse))]
@@ -182,9 +280,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectLockRequest: MessageObject, IActorRequest
 	{
-		public static ObjectLockRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectLockRequest() : ObjectPool.Instance.Fetch(typeof(ObjectLockRequest)) as ObjectLockRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectLockRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectLockRequest() : ObjectPool.Instance.Fetch(typeof(ObjectLockRequest)) as ObjectLockRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -201,15 +300,28 @@ namespace ET
 		[MemoryPackOrder(4)]
 		public int Time { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Type = default;
+			this.Key = default;
+			this.ActorId = default;
+			this.Time = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.ObjectLockResponse)]
 	[MemoryPackable]
 	public partial class ObjectLockResponse: MessageObject, IActorResponse
 	{
-		public static ObjectLockResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectLockResponse() : ObjectPool.Instance.Fetch(typeof(ObjectLockResponse)) as ObjectLockResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectLockResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectLockResponse() : ObjectPool.Instance.Fetch(typeof(ObjectLockResponse)) as ObjectLockResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -220,6 +332,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(ObjectUnLockResponse))]
@@ -227,9 +349,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectUnLockRequest: MessageObject, IActorRequest
 	{
-		public static ObjectUnLockRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectUnLockRequest() : ObjectPool.Instance.Fetch(typeof(ObjectUnLockRequest)) as ObjectUnLockRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectUnLockRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectUnLockRequest() : ObjectPool.Instance.Fetch(typeof(ObjectUnLockRequest)) as ObjectUnLockRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -246,15 +369,28 @@ namespace ET
 		[MemoryPackOrder(4)]
 		public ActorId NewActorId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Type = default;
+			this.Key = default;
+			this.OldActorId = default;
+			this.NewActorId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.ObjectUnLockResponse)]
 	[MemoryPackable]
 	public partial class ObjectUnLockResponse: MessageObject, IActorResponse
 	{
-		public static ObjectUnLockResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectUnLockResponse() : ObjectPool.Instance.Fetch(typeof(ObjectUnLockResponse)) as ObjectUnLockResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectUnLockResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectUnLockResponse() : ObjectPool.Instance.Fetch(typeof(ObjectUnLockResponse)) as ObjectUnLockResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -265,6 +401,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(ObjectRemoveResponse))]
@@ -272,9 +418,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectRemoveRequest: MessageObject, IActorRequest
 	{
-		public static ObjectRemoveRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectRemoveRequest() : ObjectPool.Instance.Fetch(typeof(ObjectRemoveRequest)) as ObjectRemoveRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectRemoveRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectRemoveRequest() : ObjectPool.Instance.Fetch(typeof(ObjectRemoveRequest)) as ObjectRemoveRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -285,15 +432,26 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public long Key { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Type = default;
+			this.Key = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.ObjectRemoveResponse)]
 	[MemoryPackable]
 	public partial class ObjectRemoveResponse: MessageObject, IActorResponse
 	{
-		public static ObjectRemoveResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectRemoveResponse() : ObjectPool.Instance.Fetch(typeof(ObjectRemoveResponse)) as ObjectRemoveResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectRemoveResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectRemoveResponse() : ObjectPool.Instance.Fetch(typeof(ObjectRemoveResponse)) as ObjectRemoveResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -304,6 +462,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(ObjectGetResponse))]
@@ -311,9 +479,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectGetRequest: MessageObject, IActorRequest
 	{
-		public static ObjectGetRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectGetRequest() : ObjectPool.Instance.Fetch(typeof(ObjectGetRequest)) as ObjectGetRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectGetRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectGetRequest() : ObjectPool.Instance.Fetch(typeof(ObjectGetRequest)) as ObjectGetRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -324,15 +493,26 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public long Key { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Type = default;
+			this.Key = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.ObjectGetResponse)]
 	[MemoryPackable]
 	public partial class ObjectGetResponse: MessageObject, IActorResponse
 	{
-		public static ObjectGetResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectGetResponse() : ObjectPool.Instance.Fetch(typeof(ObjectGetResponse)) as ObjectGetResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectGetResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectGetResponse() : ObjectPool.Instance.Fetch(typeof(ObjectGetResponse)) as ObjectGetResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -349,6 +529,18 @@ namespace ET
 		[MemoryPackOrder(4)]
 		public ActorId ActorId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			this.Type = default;
+			this.ActorId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(G2R_GetLoginKey))]
@@ -356,9 +548,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class R2G_GetLoginKey: MessageObject, IActorRequest
 	{
-		public static R2G_GetLoginKey Create(bool isFromPool = false) { return !isFromPool? new R2G_GetLoginKey() : ObjectPool.Instance.Fetch(typeof(R2G_GetLoginKey)) as R2G_GetLoginKey; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static R2G_GetLoginKey Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new R2G_GetLoginKey() : ObjectPool.Instance.Fetch(typeof(R2G_GetLoginKey)) as R2G_GetLoginKey; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -366,15 +559,25 @@ namespace ET
 		[MemoryPackOrder(1)]
 		public string Account { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Account = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.G2R_GetLoginKey)]
 	[MemoryPackable]
 	public partial class G2R_GetLoginKey: MessageObject, IActorResponse
 	{
-		public static G2R_GetLoginKey Create(bool isFromPool = false) { return !isFromPool? new G2R_GetLoginKey() : ObjectPool.Instance.Fetch(typeof(G2R_GetLoginKey)) as G2R_GetLoginKey; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2R_GetLoginKey Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2R_GetLoginKey() : ObjectPool.Instance.Fetch(typeof(G2R_GetLoginKey)) as G2R_GetLoginKey; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -391,28 +594,50 @@ namespace ET
 		[MemoryPackOrder(4)]
 		public long GateId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			this.Key = default;
+			this.GateId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.G2M_SessionDisconnect)]
 	[MemoryPackable]
 	public partial class G2M_SessionDisconnect: MessageObject, IActorLocationMessage
 	{
-		public static G2M_SessionDisconnect Create(bool isFromPool = false) { return !isFromPool? new G2M_SessionDisconnect() : ObjectPool.Instance.Fetch(typeof(G2M_SessionDisconnect)) as G2M_SessionDisconnect; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2M_SessionDisconnect Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2M_SessionDisconnect() : ObjectPool.Instance.Fetch(typeof(G2M_SessionDisconnect)) as G2M_SessionDisconnect; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(InnerMessage.ObjectQueryResponse)]
 	[MemoryPackable]
 	public partial class ObjectQueryResponse: MessageObject, IActorResponse
 	{
-		public static ObjectQueryResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectQueryResponse() : ObjectPool.Instance.Fetch(typeof(ObjectQueryResponse)) as ObjectQueryResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static ObjectQueryResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new ObjectQueryResponse() : ObjectPool.Instance.Fetch(typeof(ObjectQueryResponse)) as ObjectQueryResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -426,6 +651,17 @@ namespace ET
 		[MemoryPackOrder(3)]
 		public byte[] Entity { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			this.Entity = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(M2M_UnitTransferResponse))]
@@ -433,9 +669,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2M_UnitTransferRequest: MessageObject, IActorRequest
 	{
-		public static M2M_UnitTransferRequest Create(bool isFromPool = false) { return !isFromPool? new M2M_UnitTransferRequest() : ObjectPool.Instance.Fetch(typeof(M2M_UnitTransferRequest)) as M2M_UnitTransferRequest; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static M2M_UnitTransferRequest Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new M2M_UnitTransferRequest() : ObjectPool.Instance.Fetch(typeof(M2M_UnitTransferRequest)) as M2M_UnitTransferRequest; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -447,7 +684,18 @@ namespace ET
 		public byte[] Unit { get; set; }
 
 		[MemoryPackOrder(3)]
-		public List<byte[]> Entitys { get; set; }
+		public List<byte[]> Entitys { get; set; } = new();
+
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.OldActorId = default;
+			this.Unit = default;
+			this.Entitys.Clear();
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
 
 	}
 
@@ -455,9 +703,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2M_UnitTransferResponse: MessageObject, IActorResponse
 	{
-		public static M2M_UnitTransferResponse Create(bool isFromPool = false) { return !isFromPool? new M2M_UnitTransferResponse() : ObjectPool.Instance.Fetch(typeof(M2M_UnitTransferResponse)) as M2M_UnitTransferResponse; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static M2M_UnitTransferResponse Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new M2M_UnitTransferResponse() : ObjectPool.Instance.Fetch(typeof(M2M_UnitTransferResponse)) as M2M_UnitTransferResponse; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -468,6 +717,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	public static class InnerMessage

+ 115 - 27
Unity/Assets/Scripts/Model/Generate/Server/Message/LockStepInner_S_21001.cs

@@ -9,9 +9,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2Match_Match: MessageObject, IActorRequest
 	{
-		public static G2Match_Match Create(bool isFromPool = false) { return !isFromPool? new G2Match_Match() : ObjectPool.Instance.Fetch(typeof(G2Match_Match)) as G2Match_Match; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2Match_Match Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2Match_Match() : ObjectPool.Instance.Fetch(typeof(G2Match_Match)) as G2Match_Match; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -19,15 +20,25 @@ namespace ET
 		[MemoryPackOrder(1)]
 		public long Id { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Id = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepInner.Match2G_Match)]
 	[MemoryPackable]
 	public partial class Match2G_Match: MessageObject, IActorResponse
 	{
-		public static Match2G_Match Create(bool isFromPool = false) { return !isFromPool? new Match2G_Match() : ObjectPool.Instance.Fetch(typeof(Match2G_Match)) as Match2G_Match; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Match2G_Match Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Match2G_Match() : ObjectPool.Instance.Fetch(typeof(Match2G_Match)) as Match2G_Match; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -38,6 +49,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(Map2Match_GetRoom))]
@@ -45,15 +66,25 @@ namespace ET
 	[MemoryPackable]
 	public partial class Match2Map_GetRoom: MessageObject, IActorRequest
 	{
-		public static Match2Map_GetRoom Create(bool isFromPool = false) { return !isFromPool? new Match2Map_GetRoom() : ObjectPool.Instance.Fetch(typeof(Match2Map_GetRoom)) as Match2Map_GetRoom; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Match2Map_GetRoom Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Match2Map_GetRoom() : ObjectPool.Instance.Fetch(typeof(Match2Map_GetRoom)) as Match2Map_GetRoom; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 		[MemoryPackOrder(1)]
-		public List<long> PlayerIds { get; set; }
+		public List<long> PlayerIds { get; set; } = new();
+
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.PlayerIds.Clear();
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
 
 	}
 
@@ -61,9 +92,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class Map2Match_GetRoom: MessageObject, IActorResponse
 	{
-		public static Map2Match_GetRoom Create(bool isFromPool = false) { return !isFromPool? new Map2Match_GetRoom() : ObjectPool.Instance.Fetch(typeof(Map2Match_GetRoom)) as Map2Match_GetRoom; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Map2Match_GetRoom Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Map2Match_GetRoom() : ObjectPool.Instance.Fetch(typeof(Map2Match_GetRoom)) as Map2Match_GetRoom; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -78,6 +110,17 @@ namespace ET
 		[MemoryPackOrder(3)]
 		public ActorId ActorId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			this.ActorId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(Room2G_Reconnect))]
@@ -85,9 +128,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2Room_Reconnect: MessageObject, IActorRequest
 	{
-		public static G2Room_Reconnect Create(bool isFromPool = false) { return !isFromPool? new G2Room_Reconnect() : ObjectPool.Instance.Fetch(typeof(G2Room_Reconnect)) as G2Room_Reconnect; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2Room_Reconnect Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2Room_Reconnect() : ObjectPool.Instance.Fetch(typeof(G2Room_Reconnect)) as G2Room_Reconnect; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -95,15 +139,25 @@ namespace ET
 		[MemoryPackOrder(1)]
 		public long PlayerId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.PlayerId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepInner.Room2G_Reconnect)]
 	[MemoryPackable]
 	public partial class Room2G_Reconnect: MessageObject, IActorResponse
 	{
-		public static Room2G_Reconnect Create(bool isFromPool = false) { return !isFromPool? new Room2G_Reconnect() : ObjectPool.Instance.Fetch(typeof(Room2G_Reconnect)) as Room2G_Reconnect; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Room2G_Reconnect Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Room2G_Reconnect() : ObjectPool.Instance.Fetch(typeof(Room2G_Reconnect)) as Room2G_Reconnect; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -118,11 +172,24 @@ namespace ET
 		public long StartTime { get; set; }
 
 		[MemoryPackOrder(4)]
-		public List<LockStepUnitInfo> UnitInfos { get; set; }
+		public List<LockStepUnitInfo> UnitInfos { get; set; } = new();
 
 		[MemoryPackOrder(5)]
 		public int Frame { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			this.StartTime = default;
+			this.UnitInfos.Clear();
+			this.Frame = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[ResponseType(nameof(Room2RoomManager_Init))]
@@ -130,15 +197,25 @@ namespace ET
 	[MemoryPackable]
 	public partial class RoomManager2Room_Init: MessageObject, IActorRequest
 	{
-		public static RoomManager2Room_Init Create(bool isFromPool = false) { return !isFromPool? new RoomManager2Room_Init() : ObjectPool.Instance.Fetch(typeof(RoomManager2Room_Init)) as RoomManager2Room_Init; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static RoomManager2Room_Init Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new RoomManager2Room_Init() : ObjectPool.Instance.Fetch(typeof(RoomManager2Room_Init)) as RoomManager2Room_Init; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 		[MemoryPackOrder(1)]
-		public List<long> PlayerIds { get; set; }
+		public List<long> PlayerIds { get; set; } = new();
+
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.PlayerIds.Clear();
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
 
 	}
 
@@ -146,9 +223,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class Room2RoomManager_Init: MessageObject, IActorResponse
 	{
-		public static Room2RoomManager_Init Create(bool isFromPool = false) { return !isFromPool? new Room2RoomManager_Init() : ObjectPool.Instance.Fetch(typeof(Room2RoomManager_Init)) as Room2RoomManager_Init; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Room2RoomManager_Init Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Room2RoomManager_Init() : ObjectPool.Instance.Fetch(typeof(Room2RoomManager_Init)) as Room2RoomManager_Init; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -159,6 +237,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	public static class LockStepInner

+ 160 - 39
Unity/Assets/Scripts/Model/Generate/Server/Message/LockStepOuter_C_11001.cs

@@ -8,22 +8,32 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2G_Match: MessageObject, IRequest
 	{
-		public static C2G_Match Create(bool isFromPool = false) { return !isFromPool? new C2G_Match() : ObjectPool.Instance.Fetch(typeof(C2G_Match)) as C2G_Match; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static C2G_Match Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new C2G_Match() : ObjectPool.Instance.Fetch(typeof(C2G_Match)) as C2G_Match; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.G2C_Match)]
 	[MemoryPackable]
 	public partial class G2C_Match: MessageObject, IResponse
 	{
-		public static G2C_Match Create(bool isFromPool = false) { return !isFromPool? new G2C_Match() : ObjectPool.Instance.Fetch(typeof(G2C_Match)) as G2C_Match; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2C_Match Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2C_Match() : ObjectPool.Instance.Fetch(typeof(G2C_Match)) as G2C_Match; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -34,6 +44,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.Error = default;
+			this.Message = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 // 匹配成功,通知客户端切换场景
@@ -41,9 +61,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class Match2G_NotifyMatchSuccess: MessageObject, IActorMessage
 	{
-		public static Match2G_NotifyMatchSuccess Create(bool isFromPool = false) { return !isFromPool? new Match2G_NotifyMatchSuccess() : ObjectPool.Instance.Fetch(typeof(Match2G_NotifyMatchSuccess)) as Match2G_NotifyMatchSuccess; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Match2G_NotifyMatchSuccess Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Match2G_NotifyMatchSuccess() : ObjectPool.Instance.Fetch(typeof(Match2G_NotifyMatchSuccess)) as Match2G_NotifyMatchSuccess; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -52,6 +73,15 @@ namespace ET
 		[MemoryPackOrder(1)]
 		public ActorId ActorId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.RpcId = default;
+			this.ActorId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 // 客户端通知房间切换场景完成
@@ -59,22 +89,32 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2Room_ChangeSceneFinish: MessageObject, IActorRoom
 	{
-		public static C2Room_ChangeSceneFinish Create(bool isFromPool = false) { return !isFromPool? new C2Room_ChangeSceneFinish() : ObjectPool.Instance.Fetch(typeof(C2Room_ChangeSceneFinish)) as C2Room_ChangeSceneFinish; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static C2Room_ChangeSceneFinish Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new C2Room_ChangeSceneFinish() : ObjectPool.Instance.Fetch(typeof(C2Room_ChangeSceneFinish)) as C2Room_ChangeSceneFinish; 
+		}
 
 		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.PlayerId = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.LockStepUnitInfo)]
 	[MemoryPackable]
 	public partial class LockStepUnitInfo: MessageObject
 	{
-		public static LockStepUnitInfo Create(bool isFromPool = false) { return !isFromPool? new LockStepUnitInfo() : ObjectPool.Instance.Fetch(typeof(LockStepUnitInfo)) as LockStepUnitInfo; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static LockStepUnitInfo Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new LockStepUnitInfo() : ObjectPool.Instance.Fetch(typeof(LockStepUnitInfo)) as LockStepUnitInfo; 
+		}
 
 		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
@@ -85,6 +125,16 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public TrueSync.TSQuaternion Rotation { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.PlayerId = default;
+			this.Position = default;
+			this.Rotation = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 // 房间通知客户端进入战斗
@@ -92,15 +142,25 @@ namespace ET
 	[MemoryPackable]
 	public partial class Room2C_Start: MessageObject, IActorMessage
 	{
-		public static Room2C_Start Create(bool isFromPool = false) { return !isFromPool? new Room2C_Start() : ObjectPool.Instance.Fetch(typeof(Room2C_Start)) as Room2C_Start; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Room2C_Start Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Room2C_Start() : ObjectPool.Instance.Fetch(typeof(Room2C_Start)) as Room2C_Start; 
+		}
 
 		[MemoryPackOrder(0)]
 		public long StartTime { get; set; }
 
 		[MemoryPackOrder(1)]
-		public List<LockStepUnitInfo> UnitInfo { get; set; }
+		public List<LockStepUnitInfo> UnitInfo { get; set; } = new();
+
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.StartTime = default;
+			this.UnitInfo.Clear();
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
 
 	}
 
@@ -108,9 +168,10 @@ namespace ET
 	[MemoryPackable]
 	public partial class FrameMessage: MessageObject, IActorMessage
 	{
-		public static FrameMessage Create(bool isFromPool = false) { return !isFromPool? new FrameMessage() : ObjectPool.Instance.Fetch(typeof(FrameMessage)) as FrameMessage; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static FrameMessage Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new FrameMessage() : ObjectPool.Instance.Fetch(typeof(FrameMessage)) as FrameMessage; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int Frame { get; set; }
@@ -121,41 +182,70 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public LSInput Input { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.Frame = default;
+			this.PlayerId = default;
+			this.Input = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.OneFrameInputs)]
 	[MemoryPackable]
 	public partial class OneFrameInputs: MessageObject, IActorMessage
 	{
-		public static OneFrameInputs Create(bool isFromPool = false) { return !isFromPool? new OneFrameInputs() : ObjectPool.Instance.Fetch(typeof(OneFrameInputs)) as OneFrameInputs; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static OneFrameInputs Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new OneFrameInputs() : ObjectPool.Instance.Fetch(typeof(OneFrameInputs)) as OneFrameInputs; 
+		}
 
 		[MongoDB.Bson.Serialization.Attributes.BsonDictionaryOptions(MongoDB.Bson.Serialization.Options.DictionaryRepresentation.ArrayOfArrays)]
 		[MemoryPackOrder(1)]
-		public Dictionary<long, LSInput> Inputs { get; set; }
+		public Dictionary<long, LSInput> Inputs { get; set; } = new();
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.Inputs.Clear();
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.Room2C_AdjustUpdateTime)]
 	[MemoryPackable]
 	public partial class Room2C_AdjustUpdateTime: MessageObject, IActorMessage
 	{
-		public static Room2C_AdjustUpdateTime Create(bool isFromPool = false) { return !isFromPool? new Room2C_AdjustUpdateTime() : ObjectPool.Instance.Fetch(typeof(Room2C_AdjustUpdateTime)) as Room2C_AdjustUpdateTime; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Room2C_AdjustUpdateTime Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Room2C_AdjustUpdateTime() : ObjectPool.Instance.Fetch(typeof(Room2C_AdjustUpdateTime)) as Room2C_AdjustUpdateTime; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int DiffTime { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.DiffTime = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.C2Room_CheckHash)]
 	[MemoryPackable]
 	public partial class C2Room_CheckHash: MessageObject, IActorRoom
 	{
-		public static C2Room_CheckHash Create(bool isFromPool = false) { return !isFromPool? new C2Room_CheckHash() : ObjectPool.Instance.Fetch(typeof(C2Room_CheckHash)) as C2Room_CheckHash; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static C2Room_CheckHash Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new C2Room_CheckHash() : ObjectPool.Instance.Fetch(typeof(C2Room_CheckHash)) as C2Room_CheckHash; 
+		}
 
 		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
@@ -166,15 +256,26 @@ namespace ET
 		[MemoryPackOrder(2)]
 		public long Hash { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.PlayerId = default;
+			this.Frame = default;
+			this.Hash = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.Room2C_CheckHashFail)]
 	[MemoryPackable]
 	public partial class Room2C_CheckHashFail: MessageObject, IActorMessage
 	{
-		public static Room2C_CheckHashFail Create(bool isFromPool = false) { return !isFromPool? new Room2C_CheckHashFail() : ObjectPool.Instance.Fetch(typeof(Room2C_CheckHashFail)) as Room2C_CheckHashFail; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static Room2C_CheckHashFail Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new Room2C_CheckHashFail() : ObjectPool.Instance.Fetch(typeof(Room2C_CheckHashFail)) as Room2C_CheckHashFail; 
+		}
 
 		[MemoryPackOrder(0)]
 		public int Frame { get; set; }
@@ -182,25 +283,45 @@ namespace ET
 		[MemoryPackOrder(1)]
 		public byte[] LSWorldBytes { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.Frame = default;
+			this.LSWorldBytes = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	[Message(LockStepOuter.G2C_Reconnect)]
 	[MemoryPackable]
 	public partial class G2C_Reconnect: MessageObject, IActorMessage
 	{
-		public static G2C_Reconnect Create(bool isFromPool = false) { return !isFromPool? new G2C_Reconnect() : ObjectPool.Instance.Fetch(typeof(G2C_Reconnect)) as G2C_Reconnect; }
-
-		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
+		public static G2C_Reconnect Create(bool isFromPool = true) 
+		{ 
+			return !isFromPool? new G2C_Reconnect() : ObjectPool.Instance.Fetch(typeof(G2C_Reconnect)) as G2C_Reconnect; 
+		}
 
 		[MemoryPackOrder(0)]
 		public long StartTime { get; set; }
 
 		[MemoryPackOrder(1)]
-		public List<LockStepUnitInfo> UnitInfos { get; set; }
+		public List<LockStepUnitInfo> UnitInfos { get; set; } = new();
 
 		[MemoryPackOrder(2)]
 		public int Frame { get; set; }
 
+		public override void Dispose() 
+		{
+			if (!this.IsFromPool) return;
+			this.StartTime = default;
+			this.UnitInfos.Clear();
+			this.Frame = default;
+			
+			ObjectPool.Instance.Recycle(this); 
+		}
+
 	}
 
 	public static class LockStepOuter

Разница между файлами не показана из-за своего большого размера
+ 484 - 115
Unity/Assets/Scripts/Model/Generate/Server/Message/OuterMessage_C_10001.cs


Некоторые файлы не были показаны из-за большого количества измененных файлов