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));