diff --git a/AxibugEmuOnline.Client/Assets/AxiProjectTools/AxiNSPack/Editors/AxibugNSPTools.cs b/AxibugEmuOnline.Client/Assets/AxiProjectTools/AxiNSPack/Editors/AxibugNSPTools.cs
index 4da1036a..c9e192f0 100644
--- a/AxibugEmuOnline.Client/Assets/AxiProjectTools/AxiNSPack/Editors/AxibugNSPTools.cs
+++ b/AxibugEmuOnline.Client/Assets/AxiProjectTools/AxiNSPack/Editors/AxibugNSPTools.cs
@@ -1,3 +1,4 @@
+#if UNITY_EDITOR_WIN
 using System;
 using System.Collections.Generic;
 using System.IO;
@@ -37,12 +38,12 @@ namespace AxibugEmuOnline.Editors
         }
 
         [MenuItem("Axibug��ֲ����/Switch/AxibugNSPTools/Build With RepackNSP(���NSP�����¹���NPS��")]
-        static void BuildWithRepackNSP()
+        public static void BuildWithRepackNSP()
         {
             if (!CheckEnvironmentVariable())
                 return;
 
-            if (!EditorUtility.DisplayDialog("ȷ�ϰ���Ϣ", $"�������?", "����", "ȡ��"))
+            if (!EditorUtility.DisplayDialog("���", $"ȷ�ϴ��NSP?", "����", "ȡ��"))
                 return;
 
             var levels = new List<string>();
@@ -325,3 +326,4 @@ namespace AxibugEmuOnline.Editors
         #endregion
     }
 }
+#endif
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors/AxiAutoBuild.cs b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors/AxiAutoBuild.cs
new file mode 100644
index 00000000..c8643d9f
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors/AxiAutoBuild.cs
@@ -0,0 +1,118 @@
+#if UNITY_EDITOR
+using AxibugEmuOnline.Editors;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using UnityEditor;
+using UnityEditor.Build.Reporting;
+using UnityEngine;
+
+public static class AxiAutoBuild
+{
+    [MenuItem("Axibug移植工具/AutoBuild/Build ALL")]
+    public static void Build_Build_ALL()
+    {
+        Build_Global(BuildTarget.Android);
+        Build_Global(BuildTarget.iOS);
+        Build_Global(BuildTarget.StandaloneWindows);
+        Build_Global(BuildTarget.StandaloneLinux64);
+        Build_Global(BuildTarget.WSAPlayer);
+        AxibugNSPTools.BuildWithRepackNSP();
+    }
+
+    [MenuItem("Axibug移植工具/AutoBuild/Android")]
+    public static void Build_Android()
+    {
+        Build_Global(BuildTarget.Android);
+    }
+
+    [MenuItem("Axibug移植工具/AutoBuild/IOS")]
+    public static void Build_IOS()
+    {
+        Build_Global(BuildTarget.iOS);
+    }
+    [MenuItem("Axibug移植工具/AutoBuild/PC")]
+    public static void Build_PC()
+    {
+        Build_Global(BuildTarget.StandaloneWindows);
+    }
+    [MenuItem("Axibug移植工具/AutoBuild/Linux")]
+    public static void Build_Linux64()
+    {
+        Build_Global(BuildTarget.StandaloneLinux64);
+    }
+    [MenuItem("Axibug移植工具/AutoBuild/UWP")]
+    public static void Build_UWP()
+    {
+        Build_Global(BuildTarget.WSAPlayer);
+    }
+
+    [MenuItem("Axibug移植工具/AutoBuild/EmbeddedLinux")]
+    public static void Build_EmbeddedLinux()
+    {
+        Build_Global(BuildTarget.EmbeddedLinux);
+    }
+
+    [MenuItem("Axibug移植工具/AutoBuild/Switch")]
+    public static void Build_Switch()
+    {
+        AxibugNSPTools.BuildWithRepackNSP();
+    }
+
+
+    public static void Build_Global(BuildTarget target)
+    {
+        if (!EditorUtility.DisplayDialog("打包", $"确认打包{target}?", "继续", "取消"))
+            return;
+
+        var levels = new List<string>();
+        foreach (var scene in EditorBuildSettings.scenes)
+        {
+            if (scene.enabled)
+                levels.Add(scene.path);
+        }
+
+        var buildOpt = EditorUserBuildSettings.development ? BuildOptions.Development : BuildOptions.None;
+        if (EditorUserBuildSettings.buildWithDeepProfilingSupport)
+            buildOpt |= BuildOptions.EnableDeepProfilingSupport;
+        if (EditorUserBuildSettings.allowDebugging)
+            buildOpt |= BuildOptions.AllowDebugging;
+
+        string targetName = $"{Application.productName}_{DateTime.Now.ToString("yyyyMMddHHmmss")}";
+
+        targetName += target switch
+        {
+            BuildTarget.Android => ".apk",
+            BuildTarget.iOS => ".ipa",
+            BuildTarget.StandaloneWindows => ".exe",
+            _ => "",
+        };
+
+
+        string _locationPathName = $"Output/{target}/{targetName}";
+        string FullPath = Path.GetFullPath(Path.Combine(Application.dataPath, "..", _locationPathName));
+        string dirPath = Path.GetDirectoryName(FullPath);
+        if (!Directory.Exists(dirPath))
+            Directory.CreateDirectory(dirPath);
+
+        var options = new BuildPlayerOptions
+        {
+            scenes = levels.ToArray(),
+            locationPathName = _locationPathName,
+            target = target,
+            options = buildOpt
+        };
+
+        try
+        {
+            BuildReport report = BuildPipeline.BuildPlayer(options);
+        }
+        catch (Exception ex)
+        {
+            Debug.LogError($"[AutoBuild] Unity Build {target} 错误:{ex.ToString()}");
+            return;
+        }
+    }
+
+}
+#endif
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors/AxiAutoBuild.cs.meta b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors/AxiAutoBuild.cs.meta
new file mode 100644
index 00000000..e40ad9a0
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors/AxiAutoBuild.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: e3b8550d3919d1044b50eb20f0c50fb8
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/FrameProfiler.cs b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/FrameProfiler.cs
index df242e06..cb9a180c 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/FrameProfiler.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/FrameProfiler.cs
@@ -34,6 +34,22 @@ namespace AxiReplay
             m_targetFrameRate = targetFrameRate;
         }
 
+        /// <summary>
+        /// 临时方法(暂行)
+        /// </summary>
+        /// <param name="mRemoteForwardCount"></param>
+        /// <returns></returns>
+        /// <exception cref="NotImplementedException"></exception>
+        public int TempFrameCount(int mRemoteForwardCount)
+        {
+            if (mRemoteForwardCount == 0)
+                return 0;
+            if (mRemoteForwardCount < 5)
+                return 1;
+            else
+                return (int)Math.Ceiling(mRemoteForwardCount / 5f);
+        }
+
         void CalcCacheCount()
         {
             double deltaMax = 0;
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs
index cdba7015..f7656a0e 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs
@@ -103,7 +103,8 @@ namespace AxiReplay
 
 
             //if (targetFrame == mNextReplay.FrameStartID && targetFrame <= mRemoteFrameIdx && mNetReplayQueue.Count > 0)
-            if (targetFrame == mNextReplay.FrameStartID && targetFrame <= mRemoteFrameIdx && mNetReplayQueue.Count >= mRemoteForwardCount)
+            //if (targetFrame == mNextReplay.FrameStartID && targetFrame <= mRemoteFrameIdx && mNetReplayQueue.Count >= mRemoteForwardCount)
+            if (targetFrame == mNextReplay.FrameStartID && targetFrame <= mRemoteFrameIdx && mNetReplayQueue.Count >= frameProfiler.TempFrameCount(mRemoteForwardCount))
             {
                 //当前帧追加
                 mCurrClientFrameIdx = targetFrame;
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/NESMultiKeysSetting.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/NESMultiKeysSetting.cs
index 5db67991..7453d886 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/NESMultiKeysSetting.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/NESMultiKeysSetting.cs
@@ -36,7 +36,7 @@ namespace AxiInputSP.Setting
             controllers[0].ColletAllKey();
             return;
 #endif
-            #region P1
+            #region 
             //P1 键盘
             controllers[0].SetKey((ulong)EnumButtonType.START, AxiInputEx.ByKeyCode(KeyCode.Return));
             controllers[0].SetKey((ulong)EnumButtonType.SELECT, AxiInputEx.ByKeyCode(KeyCode.RightShift));