101 lines
2.1 KiB
C#
101 lines
2.1 KiB
C#
using Module.Log;
|
||
using UnityEngine;
|
||
|
||
public class UIControllerBase<T> : MonoBehaviour
|
||
{
|
||
private static T _Instance;
|
||
public GameObject[] childWindows;
|
||
|
||
// 不确定窗口是否存在时需要判空
|
||
public static T Instance()
|
||
{
|
||
return _Instance;
|
||
}
|
||
|
||
public static void SetInstance(T instance)
|
||
{
|
||
_Instance = instance;
|
||
}
|
||
|
||
private void Awake()
|
||
{
|
||
Init();
|
||
}
|
||
|
||
protected virtual void Init()
|
||
{
|
||
LogModule.DebugLog("Base Init");
|
||
//HotFix();
|
||
}
|
||
|
||
// 如果覆盖了OnDestroy需要将_Instance置空,防止资源无法释放
|
||
protected virtual void OnDestroy()
|
||
{
|
||
Release();
|
||
}
|
||
|
||
private void Release()
|
||
{
|
||
_Instance = default(T);
|
||
}
|
||
|
||
public void SwitchWindow(int index)
|
||
{
|
||
if (null == childWindows)
|
||
{
|
||
LogModule.WarningLog("child window is not set");
|
||
return;
|
||
}
|
||
|
||
if (index >= childWindows.Length)
|
||
{
|
||
LogModule.WarningLog("child window index out range :" + index + " " + childWindows.Length);
|
||
return;
|
||
}
|
||
|
||
for (var i = 0; i < childWindows.Length; i++) childWindows[i].SetActive(i == index);
|
||
}
|
||
|
||
//#region hotfix
|
||
|
||
////global
|
||
//public static LuaEnv luaEnv = new LuaEnv();
|
||
|
||
//public TextAsset _LuaScript;
|
||
|
||
//private LuaTable scriptEnv;
|
||
|
||
//public void HotFix()
|
||
//{
|
||
// if (_LuaScript == null)
|
||
// return;
|
||
|
||
// scriptEnv = luaEnv.NewTable();
|
||
|
||
// LuaTable meta = luaEnv.NewTable();
|
||
// meta.Set("__index", luaEnv.Global);
|
||
// scriptEnv.SetMetaTable(meta);
|
||
// meta.Dispose();
|
||
|
||
// scriptEnv.Set("self", this);
|
||
// luaEnv.DoString(_LuaScript.text, "LuaBehaviour", scriptEnv);
|
||
|
||
// Action luaHotFix = scriptEnv.Get<Action>("hotfix");
|
||
|
||
// if (luaHotFix != null)
|
||
// {
|
||
// luaHotFix();
|
||
// }
|
||
//}
|
||
|
||
//public void ShowOtherUI(UIPathData pathData)
|
||
//{
|
||
// UIManager.ShowUI(pathData);
|
||
//}
|
||
|
||
//public void CloseUI(UIPathData pathData)
|
||
//{
|
||
// UIManager.CloseUI(pathData);
|
||
//}
|
||
//#endregion
|
||
} |