【Unity】使用SceneManager加载/切换场景

一、直接切换

老版的(已弃用!):

Application.LoadLevel(int index); // 参数是场景编号
Application.LoadLevel(string name); // 参数是场景名字

新版的:

// 使用SceneManager!
using UnityEngine.SceneManagement; // 必须要引入

public class TestChangeScene : MonoBehaviour {
    private string sceneName;
    void ChangeScene(){
        // 切换场景
        SceneManager.LoadScene(1); // 参数是场景编号或场景名字
        // 获取当前场景的名字
        sceneName = SceneManager.GetActiveScene().name;
    }
}

注意点:

  • 网上搜的资料大多是老版本的写法,小心被坑!还是看文档最靠谱。
  • 需要把加载的场景在File -> Build Setting中添加。
  • 切换场景后所有加载物体都将删除,除非使用Object.DontDestroyOnLoad(Object)添加标记,例如人物角色(包括挂载在这些对象身上的脚本)在切换场景后需要保留,就可以用此方法。

二、异步加载场景

http://www.cnblogs.com/guxin/p/unity-use-coroutine-asynchronously-load-scene.html

原文地址:https://www.cnblogs.com/guxin/p/unity-use-scenemanager-load-scene.html