2024-01-26 19:15:07 +08:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using Cysharp.Threading.Tasks;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
using UnityEngine.SceneManagement;
|
|
|
|
|
|
|
|
|
|
namespace Script.battle
|
|
|
|
|
{
|
|
|
|
|
//各种模式场景
|
|
|
|
|
public enum GBattleMode
|
|
|
|
|
{
|
|
|
|
|
Not = -1,
|
|
|
|
|
Default = 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//初始化参数类
|
|
|
|
|
public class GBattleModeInfo
|
|
|
|
|
{
|
|
|
|
|
public List<GameObject> modes;
|
|
|
|
|
public GameObject root;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//全局战斗模式管理器
|
|
|
|
|
public class GBattleModeManager : SingletonScene<GBattleModeManager>
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
public static string[] Worlds = { "WorldScene" };
|
|
|
|
|
|
|
|
|
|
//当前模式
|
|
|
|
|
private GBattleMode _current = GBattleMode.Not;
|
|
|
|
|
|
|
|
|
|
//初始化管理器
|
|
|
|
|
public void Init(GBattleModeInfo info)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//打开指定模式
|
|
|
|
|
public async UniTask Open(GBattleMode mode)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
//销毁之前模式
|
|
|
|
|
await Close();
|
|
|
|
|
_current = mode;
|
|
|
|
|
await LoadScene(mode);
|
2024-01-29 02:28:42 +08:00
|
|
|
|
//开始同步
|
|
|
|
|
App.Sync.onStart();
|
2024-01-26 19:15:07 +08:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//关闭当前模式
|
|
|
|
|
public async UniTask Close()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
await UnloadScene(_current);
|
2024-01-29 02:28:42 +08:00
|
|
|
|
App.Sync.onStop();
|
2024-01-26 19:15:07 +08:00
|
|
|
|
_current = GBattleMode.Not;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取场景名称
|
|
|
|
|
public string GetWorldName(GBattleMode mode)
|
|
|
|
|
{
|
|
|
|
|
return Worlds[(int)mode];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//加载场景
|
|
|
|
|
private async UniTask LoadScene(GBattleMode mode)
|
|
|
|
|
{
|
|
|
|
|
if (mode == GBattleMode.Not) return;
|
|
|
|
|
Debug.Log($"[GBattleModeManager] 打开场景{GetWorldName(mode)}");
|
|
|
|
|
await SceneManager.LoadSceneAsync(GetWorldName(mode), LoadSceneMode.Additive);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//销毁场景
|
|
|
|
|
private async UniTask UnloadScene(GBattleMode mode)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (mode == GBattleMode.Not) return;
|
|
|
|
|
Debug.Log($"[GBattleModeManager] 关闭场景{GetWorldName(mode)}");
|
|
|
|
|
await SceneManager.UnloadSceneAsync(GetWorldName(mode));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|