119 lines
3.7 KiB
C#
119 lines
3.7 KiB
C#
using Logic;
|
||
using UnityEngine;
|
||
using UnityEngine.SceneManagement;
|
||
using RuntimeData;
|
||
|
||
namespace UI{
|
||
public class UIManager
|
||
{
|
||
|
||
public static UIManager Instance { get; private set; }
|
||
private Main _main;
|
||
private MapData _mapData;
|
||
public GameObject ROUIManager;
|
||
|
||
public TopBarUI TopBarUI;
|
||
public BottomBarUI BottomBarUI;
|
||
public BottomInfoUI BottomInfoUI;
|
||
public CenterMessageUI CenterMessageUI;
|
||
public TechTreeUI TechTreeUI;
|
||
public CityUpgradeActionUI CityUpgradeActionUI;
|
||
public GameUI GameUI;
|
||
|
||
|
||
|
||
public GameObject ROHintWindow;//提示窗口
|
||
|
||
|
||
|
||
// ✅ 新增的 UI 类成员
|
||
public SettingUI SettingUI;
|
||
public WinUI WinUI;
|
||
public MessageUI MessageUI;
|
||
public RankingUI RankingUI;
|
||
public DebugUI DebugUI;
|
||
public GameObject AIPlayingHint;
|
||
public HintUI.HintUI HintUI;
|
||
public bool AIPlaying = false;
|
||
|
||
|
||
|
||
public UIManager()
|
||
{
|
||
Instance = this;
|
||
|
||
}
|
||
|
||
public void Init(Main main)
|
||
{
|
||
_main = main;
|
||
//_mapData = mapData;
|
||
Scene currentScene = SceneManager.GetActiveScene();
|
||
GameObject[] rootObjects = currentScene.GetRootGameObjects();
|
||
foreach (GameObject rootObject in rootObjects)
|
||
if (rootObject.name == "UICanvas"){
|
||
ROUIManager = rootObject;
|
||
break;
|
||
}
|
||
AIPlayingHint = ROUIManager.transform.Find("AIPlayingHint").gameObject;
|
||
SettingUI = new SettingUI();
|
||
GameUI = new GameUI(_main,_mapData);
|
||
ROHintWindow = ROUIManager.transform.Find("HintWindow").gameObject;
|
||
HintUI = new HintUI.HintUI(ROUIManager.transform.Find("HintWindow").gameObject);
|
||
//这里要异步new和init,不然new里会用到还没被new完的自己
|
||
GameUI.Init();
|
||
}
|
||
|
||
//每次新开游戏都会更新,注意内存泄露问题!!!
|
||
public void GameInit(MapData mapData)
|
||
{
|
||
_mapData = mapData;
|
||
WinUI = new WinUI(_main, _mapData);
|
||
MessageUI = new MessageUI(_main, _mapData);
|
||
RankingUI = new RankingUI();
|
||
TopBarUI = new TopBarUI(_main,_mapData);
|
||
BottomInfoUI = new BottomInfoUI(_main,_mapData);
|
||
BottomBarUI = new BottomBarUI(_main);
|
||
CenterMessageUI = new CenterMessageUI(_main,_mapData);
|
||
TechTreeUI = new TechTreeUI();
|
||
CityUpgradeActionUI = new CityUpgradeActionUI(_main,_mapData);
|
||
DebugUI = new DebugUI(_main,_mapData);
|
||
|
||
|
||
}
|
||
|
||
|
||
public void Update(MapData mapData)
|
||
{
|
||
if (mapData != null)
|
||
{
|
||
|
||
CenterMessageUI.Update();
|
||
CityUpgradeActionUI.Update();
|
||
BottomBarUI.Update();
|
||
BottomInfoUI.Update();
|
||
if(mapData != null)
|
||
TechTreeUI.Update(mapData);
|
||
TopBarUI.Update();
|
||
WinUI.Update();
|
||
MessageUI.Update();
|
||
RankingUI.Update();
|
||
DebugUI.Update();
|
||
}
|
||
|
||
// ✅ 每帧更新新增的 UI
|
||
SettingUI.Update();
|
||
GameUI.Update();
|
||
|
||
}
|
||
|
||
public void EndTurn()
|
||
{
|
||
TopBarUI.RenderMark = true;
|
||
AIPlayingHint.SetActive(false);
|
||
|
||
//TODO 这里endturn和startturn逻辑不对
|
||
}
|
||
|
||
}
|
||
} |