Files
BingoGrassland/Assets/BingoSun/Scripts/UnityManager/SceneSwitch.cs
T

53 lines
1.5 KiB
C#
Raw Normal View History

2026-04-20 13:49:36 +08:00
using System;
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
namespace BingoBrain.Core
{
public sealed class SceneSwitch : BaseUnity<SceneSwitch>
{
private const bool IsUseUnityScene = false;
public delegate void LoadCallBack(object param);
public void SwitchInitialScene(int idx, LoadCallBack loadHandler, object param)
{
StartCoroutine(OnLoadInitialScene(idx, loadHandler, param));
}
public void SwitchScene(int idx, LoadCallBack loadHandler, object param)
{
StartCoroutine(OnLoadScene(idx, loadHandler, param));
}
private IEnumerator OnLoadInitialScene(int idx, LoadCallBack loadHandle, object param)
{
yield return vbadConst.Time10ms;
if (loadHandle != null)
{
loadHandle(param);
}
}
private IEnumerator OnLoadScene(int idx, LoadCallBack loadHandle, object param)
{
yield return vbadConst.WaitFor100ms;
GC.Collect();
GC.WaitForPendingFinalizers();
if (IsUseUnityScene)
{
AsyncOperation asyncUnityScene = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(idx, LoadSceneMode.Single);
yield return asyncUnityScene;
}
if (loadHandle != null)
{
loadHandle(param);
}
}
}
}