Cargue la escena usando la carga asíncrona.
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneLoadModel
{
private AsyncOperation asyncOperation;
/// <summary>
/// 场景加载异步操作对象
/// </summary>
public AsyncOperation AsyncOperation
{
get
{
return asyncOperation;
}
set
{
asyncOperation = value;
}
}
}
public class SceneLoadManager
{
#region Singleton
private static SceneLoadManager instance;
private SceneLoadManager()
{
sceneLoadModel = new SceneLoadModel();
}
public static SceneLoadManager Instance
{
get
{
if (instance == null)
{
instance = new SceneLoadManager();
}
return instance;
}
}
#endregion
private SceneLoadModel sceneLoadModel;
/// <summary>
/// 加载主界面
/// </summary>
public void LoadMainInterface()
{
SceneManager.LoadScene(0);
}
/// <summary>
/// 加载主场景
/// </summary>
public void LoadMainScene()
{
sceneLoadModel.AsyncOperation = SceneManager.LoadSceneAsync(1, LoadSceneMode.Additive);
// 切换到加载游戏场景
UIManager.instance.SwitchToPanel(UIPanelConst.LOAD_SCENE_PANEL);
// 游戏时间正常化
Time.timeScale = 1;
}
/// <summary>
/// 场景是否加载完成
/// </summary>
/// <returns></returns>
public bool SceneLoadIsDone()
{
return sceneLoadModel.AsyncOperation.isDone;
}
/// <summary>
/// 获取当前场景加载进度
/// </summary>
/// <returns></returns>
public float SceneLoadProgress()
{
return sceneLoadModel.AsyncOperation.progress;
}
}