Tom*_*Tom 6 c# unity-game-engine scene
好的,所以我正在开发一个有主菜单和10个级别的小项目.我不时编辑不同的级别,并想尝试它们,但是我得到一个,NullPointerException因为我的级别依赖于主菜单中的某些变量才能使级别工作,这意味着我必须改变我的级别,然后加载我的主菜单和那里的游戏.
是否可以在Unity编辑器中执行某些操作,以便在您点击"播放"时默认加载特定场景,而不是您正在使用的场景?
我显然可以解决这个问题
public bool goToMenu; //set this to true in my levels through inspector
Start()
{
if (goToMenu)
//then load main menu
}
Run Code Online (Sandbox Code Playgroud)
但如果有一种方法可以设置默认级别加载到播放模式时,它会非常方便.我看过偏好但却找不到任何东西.
谢谢!
Z4u*_*rce 17
最简单的方法是将第 0 个场景设置为默认播放模式场景:
[InitializeOnLoad]
public class EditorInit
{
static EditorInit()
{
var pathOfFirstScene = EditorBuildSettings.scenes[0].path;
var sceneAsset = AssetDatabase.LoadAssetAtPath<SceneAsset>(pathOfFirstScene);
EditorSceneManager.playModeStartScene = sceneAsset;
Debug.Log(pathOfFirstScene + " was set as default play mode scene");
}
}
Run Code Online (Sandbox Code Playgroud)
我编写了这个简单的脚本,当您按Play时,将场景加载到构建设置中索引0处。我希望有人觉得它有用。
它检测何时按下播放按钮并加载场景。然后,一切恢复正常。
哦! 而且在打开Unity和编译脚本后,它会自动执行自身,因此不必担心执行它。只需将其放在Editor文件夹中即可使用。
#if UNITY_EDITOR
using UnityEditor;
using UnityEditor.SceneManagement;
[InitializeOnLoadAttribute]
public static class DefaultSceneLoader
{
static DefaultSceneLoader(){
EditorApplication.playModeStateChanged += LoadDefaultScene;
}
static void LoadDefaultScene(PlayModeStateChange state){
if (state == PlayModeStateChange.ExitingEditMode) {
EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo ();
}
if (state == PlayModeStateChange.EnteredPlayMode) {
EditorSceneManager.LoadScene (0);
}
}
}
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4804 次 |
| 最近记录: |