c# - Unity3d - 在播放模式下加载特定场景

标签 c# unity3d scene

好的,我正在做一个有主菜单和 10 个级别的小项目。有时我会编辑不同的关卡,并想尝试一下,但是我得到了一个 NullPointerException,因为我的关卡依赖于主菜单中的某些变量才能使关卡正常工作,这意味着我必须改变我的关卡,然后加载我的主菜单并从那里开始游戏。

是否可以在 Unity 编辑器中执行某些操作,以便在您点击“播放”时默认加载特定场景,而不是您所在的场景?

我显然可以将其解决为类似

public bool goToMenu; //set this to true in my levels through inspector

Start()
{
    if (goToMenu)
        //then load main menu
}

但如果有一种方法可以设置在点击播放模式时加载默认级别,那将非常方便。我查看了首选项,但找不到任何内容。

谢谢!

最佳答案

我制作了这个简单的脚本,当您按下“播放”时,它会在build设置中加载索引 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

关于c# - Unity3d - 在播放模式下加载特定场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35586103/

相关文章:

c# - 向窗口发送 CTRL-S 消息

events - 等待场景在铯中完全渲染

swift - spritekit gamecenter 排行榜 - 如何从场景中显示排行榜?

c# - 如何测试返回的数组至少包含一个具有特定属性值的值

c# - 如何在 C# 控制台中读取用户输入

c# - Unity C# 脚本字典初始化程序不是 C# 4.0 语言规范的一部分

java - libgdx 布娃娃物理与动画

ios - Unity3d 编辑器和 iPhone6 设备上的 Sha1 hash 不同

ios - SceneKit NSNode 拆分部分

c# - Azure 移动服务中的日期时间同步问题