Selaa lähdekoodia

修复保存replay数据的bug

tanghai 2 vuotta sitten
vanhempi
commit
9d3c64ff98

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

@@ -39,8 +39,9 @@ namespace ET.Client
                     LSClientHelper.Rollback(room, room.AuthorityFrame);
                     Log.Debug($"roll back finish {room.AuthorityFrame}");
                 }
-                else
+                else // 对比成功
                 {
+                    room.Record(room.AuthorityFrame);
                     room.SendHash(room.AuthorityFrame);
                 }
             }

+ 5 - 1
Unity/Assets/Scripts/Hotfix/Share/LockStep/RoomSystem.cs

@@ -63,7 +63,7 @@ namespace ET
             return lsWorld;
         }
 
-        public static void SaveLSWorld(this Room self)
+        private static void SaveLSWorld(this Room self)
         {
             int frame = self.LSWorld.Frame;
             MemoryBuffer memoryBuffer = self.FrameBuffer.Snapshot(frame);
@@ -81,6 +81,10 @@ namespace ET
         // 记录需要存档的数据
         public static void Record(this Room self, int frame)
         {
+            if (frame > self.AuthorityFrame)
+            {
+                return;
+            }
             OneFrameInputs oneFrameInputs = self.FrameBuffer.FrameInputs(frame);
             OneFrameInputs saveInput = new();
             oneFrameInputs.CopyTo(saveInput);