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: