From 6edc9fa3fd8846e8d838dd2f55f313cc9abb01b0 Mon Sep 17 00:00:00 2001 From: GanX <2423855310@qq.com> Date: Mon, 20 Oct 2025 09:48:56 +0800 Subject: [PATCH] =?UTF-8?q?chore(StartFromCore):=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BB=8ECore=E5=BC=80=E5=90=AF=E7=9A=84=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=99=A8=E5=BF=AB=E6=8D=B7=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Editor.meta | 8 +++++ Assets/Editor/StartFromCore.cs | 47 +++++++++++++++++++++++++++++ Assets/Editor/StartFromCore.cs.meta | 11 +++++++ 3 files changed, 66 insertions(+) create mode 100644 Assets/Editor.meta create mode 100644 Assets/Editor/StartFromCore.cs create mode 100644 Assets/Editor/StartFromCore.cs.meta diff --git a/Assets/Editor.meta b/Assets/Editor.meta new file mode 100644 index 0000000..4362b37 --- /dev/null +++ b/Assets/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ba8cd76dea417264a9aaa351a2836e28 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/StartFromCore.cs b/Assets/Editor/StartFromCore.cs new file mode 100644 index 0000000..6b011d4 --- /dev/null +++ b/Assets/Editor/StartFromCore.cs @@ -0,0 +1,47 @@ +// 文件路径:Assets/Editor/StartFromCore.cs +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; + +namespace Editor +{ + public static class StartFromCore + { + // 菜单路径:Tools/Start From Core 快捷键:Ctrl+Shift+C + [MenuItem("Tools/Start From Core %#c", false, 0)] + private static void StartFromCoreScene() + { + if (EditorApplication.isPlaying) + { + Debug.Log("已在 Play 模式,忽略重复操作。"); + return; + } + + string coreScenePath = "Assets/Scenes/Core.unity"; + var coreScene = AssetDatabase.LoadAssetAtPath(coreScenePath); + + if (coreScene == null) + { + EditorUtility.DisplayDialog( + "找不到 Core 场景", + $"请在 {coreScenePath} 放置名为 Core 的场景文件。", + "确定"); + return; + } + + // 保存当前场景(可选) + if (EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo()) + { + // 把 Core 场景设置成“唯一”启动场景 + EditorSceneManager.playModeStartScene = AssetDatabase.LoadAssetAtPath(coreScenePath); + + // 进入 Play 模式 + EditorApplication.EnterPlaymode(); + } + } + + // 当正在播放时禁用菜单 + [MenuItem("Tools/Start From Core", true)] + private static bool ValidateStartFromCoreScene() => !EditorApplication.isPlaying; + } +} diff --git a/Assets/Editor/StartFromCore.cs.meta b/Assets/Editor/StartFromCore.cs.meta new file mode 100644 index 0000000..a1a62d8 --- /dev/null +++ b/Assets/Editor/StartFromCore.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 30bafb5dbef7d1a41ad35fd189ec9386 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: