不管当前在哪个场景,都可以从固定场景运行
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.SceneManagement;
public class EditorTool_Editor : Editor {
public const string MenuDir = "Tools/";
[MenuItem(MenuDir + "PlayLoginScene",priority = 5000)]
public static void OpenConfigFile()
{
//SceneManager.LoadScene("Login");
EditorSceneManager.OpenScene("Assets/VR_ChuangKe_Student/Scenes/Login.unity");
EditorApplication.isPlaying = true;
}
}
unity开发过程中,有时候游戏需要一些初始化工作,所以场景需要按照顺序来启动。这样当我们在编辑中间某个场景想要运行时,就必须切换到第一个场景。
这时候我们可以使用RuntimeInitializeOnLoadMethod属性,当unity每次开始运行场景时,会首先调用使用此属性标记的方法,我们在该方法中执行一下跳转场景的方法,这样我们就不用每次都要切换场景了。
像下面这样:
using UnityEngine;
public class InitializeOnLoad : MonoBehaviour {
[RuntimeInitializeOnLoadMethod]
static void Initialize()
{
if (SceneManager.GetActiveScene().name == "Gate")
{
return;
}
SceneManager.LoadScene("Gate");
}
}
Unity快速运行指定场景
随着游戏做的越来复杂,场景也可能越来越多,文件目录也越来越多,有时候想快速运行入口场景,得找半天,有没有方法可以快速运行指定场景呢?官方真的没有提供接口,怎么办呢?其实官方提供了一个万能方法,就是可以用代码调用所有编辑器的菜单功能:EditorApplication.ExecuteMenuItem(string menuItemPath)
。然后执行菜单: Edit/Play
具体代码如下
using UnityEngine;
using UnityEditor;
using UnityEditor.SceneManagement;
public class StartMain
{
[MenuItem("Tools/StartMain", false, 1)]
static void StartMainScene()
{
if (!UnityEngine.SceneManagement.SceneManager.GetActiveScene().name.Equals("Main"))
{
EditorSceneManager.OpenScene("Assets/GameAssets/Map/Main.unity");
}
EditorApplication.ExecuteMenuItem("Edit/Play");
}
[MenuItem("Tools/StartMain", true, 1)]
static bool ValidStartMainScene()
{
return !Application.isPlaying;
}
}