|
|
@@ -1,43 +1,60 @@
|
|
|
-using System.Collections;
|
|
|
-using System.Collections.Generic;
|
|
|
using UnityEditor;
|
|
|
using UnityEngine;
|
|
|
using UnityEngine.SceneManagement;
|
|
|
|
|
|
-//在编辑器场景使用
|
|
|
+[InitializeOnLoad]
|
|
|
public class EditPlay : MonoBehaviour
|
|
|
{
|
|
|
- static string sceneName = "Entry";
|
|
|
- [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
|
|
|
- private static void Initialize()
|
|
|
+ static string sceneName;
|
|
|
+
|
|
|
+ static EditPlay()
|
|
|
{
|
|
|
- RefreshMenuChecked();
|
|
|
- if (Menu.GetChecked("播放场景/Entry场景"))
|
|
|
+ // 从 EditorPrefs 读取存储的选项,如果不存在则设置默认值为 "Entry"
|
|
|
+ sceneName = EditorPrefs.GetString("EditPlay_SceneName", "Entry");
|
|
|
+
|
|
|
+ // 使用 delayCall 来在编辑器启动后刷新菜单项状态
|
|
|
+ EditorApplication.delayCall += () =>
|
|
|
{
|
|
|
- Debug.Log("Play的Entry场景!");
|
|
|
- string sceneName = SceneManager.GetActiveScene().name;
|
|
|
- if (sceneName != "Entry")SceneManager.LoadScene("Entry");
|
|
|
- }
|
|
|
- else {
|
|
|
- Debug.Log("Play的Current场景!");
|
|
|
+ RefreshMenuChecked();
|
|
|
+ Debug.Log("编辑器启动时已刷新菜单项状态");
|
|
|
+ };
|
|
|
+
|
|
|
+ // 自动加载场景(仅在编辑器进入播放模式时有效)
|
|
|
+ EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void OnPlayModeStateChanged(PlayModeStateChange state)
|
|
|
+ {
|
|
|
+ if (state == PlayModeStateChange.EnteredPlayMode)
|
|
|
+ {
|
|
|
+ // 在进入播放模式时加载指定场景
|
|
|
+ if (sceneName == "Entry" && SceneManager.GetActiveScene().name != "Entry")
|
|
|
+ {
|
|
|
+ Debug.Log("加载 Entry 场景");
|
|
|
+ SceneManager.LoadScene("Entry");
|
|
|
+ }
|
|
|
+ else if (sceneName == "Current")
|
|
|
+ {
|
|
|
+ Debug.Log("保持当前场景");
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
[MenuItem("播放场景/当前场景")]
|
|
|
static void playCurrentScene()
|
|
|
{
|
|
|
- Debug.Log("切换成Current场景!");
|
|
|
+ Debug.Log("切换成 Current 场景!");
|
|
|
sceneName = "Current";
|
|
|
+ EditorPrefs.SetString("EditPlay_SceneName", sceneName);
|
|
|
RefreshMenuChecked();
|
|
|
}
|
|
|
|
|
|
-
|
|
|
[MenuItem("播放场景/Entry场景")]
|
|
|
static void playEntryScene()
|
|
|
{
|
|
|
- Debug.Log("切换成Entry场景!");
|
|
|
+ Debug.Log("切换成 Entry 场景!");
|
|
|
sceneName = "Entry";
|
|
|
+ EditorPrefs.SetString("EditPlay_SceneName", sceneName);
|
|
|
RefreshMenuChecked();
|
|
|
}
|
|
|
|