167 lines
4.3 KiB
C#
167 lines
4.3 KiB
C#
using Axibug;
|
||
using Axibug.Runtime;
|
||
using System;
|
||
using UnityEngine;
|
||
using UnityEngine.Events;
|
||
|
||
namespace Game
|
||
{
|
||
/// <summary>
|
||
/// 游戏入口。
|
||
/// </summary>
|
||
public partial class AppEntry : MonoBehaviour
|
||
{
|
||
public static BuiltinDataComponent BuiltinData
|
||
{
|
||
get;
|
||
private set;
|
||
}
|
||
|
||
public static UpdateComponent HotUpdate
|
||
{
|
||
get;
|
||
private set;
|
||
}
|
||
|
||
//public static UIMgr UI
|
||
//{
|
||
// get;
|
||
// private set;
|
||
//}
|
||
|
||
//public static Tips Tips
|
||
//{
|
||
// get;
|
||
// private set;
|
||
//}
|
||
|
||
public static LocalStorage LocalStorage
|
||
{
|
||
get;
|
||
private set;
|
||
}
|
||
|
||
public static long Ticktime
|
||
{
|
||
get
|
||
{
|
||
return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000;
|
||
}
|
||
}
|
||
|
||
public static GameObject confirmUIGo = null;
|
||
public static GameObject updateUIGo = null;
|
||
|
||
//gc释放时间
|
||
long _GcTime;
|
||
|
||
public long GCTime
|
||
{
|
||
get { return _GcTime; }
|
||
set { _GcTime = value; }
|
||
}
|
||
|
||
//gc释放时间
|
||
long _idleTime;
|
||
public long IdleTime
|
||
{
|
||
get { return _idleTime; }
|
||
set { _idleTime = value; }
|
||
}
|
||
|
||
private static void InitCustomComponents()
|
||
{
|
||
BuiltinData = GameEntry.GetComponent<BuiltinDataComponent>();
|
||
HotUpdate = GameEntry.GetComponent<UpdateComponent>();
|
||
//UI = GameEntry.GetComponent<UIMgr>();
|
||
//Tips = GameEntry.GetComponent<Tips>();
|
||
LocalStorage = LocalStorage.Instance;
|
||
}
|
||
|
||
public static void QuitGame()
|
||
{
|
||
#if UNITY_EDITOR
|
||
UnityEditor.EditorApplication.isPlaying = false;
|
||
#else
|
||
Application.Quit();
|
||
#endif
|
||
}
|
||
|
||
//非随机调用策略
|
||
void CheckTickTime()
|
||
{
|
||
long tickTime = Ticktime - _GcTime;
|
||
if (tickTime > 60000)
|
||
{
|
||
UnityEngine.Resources.UnloadUnusedAssets();
|
||
GC.Collect();
|
||
_GcTime = Ticktime;
|
||
IdleTime = Ticktime;
|
||
}
|
||
}
|
||
|
||
//待机状态策略
|
||
void CheckIdleTime()
|
||
{
|
||
//待机超过2分钟,调用gc
|
||
if (Ticktime - IdleTime > 120000)
|
||
{
|
||
Log.Info("待机超过2分钟,手动调用GC");
|
||
IdleTime = Ticktime;
|
||
GCTime = Ticktime;
|
||
|
||
UnityEngine.Resources.UnloadUnusedAssets();
|
||
GC.Collect();
|
||
}
|
||
}
|
||
|
||
public static T OpenNativeUI<T>(string name) where T : UnityEngine.Object
|
||
{
|
||
string path = $"Prefabs/{name}";
|
||
UnityEngine.Object obj = Resources.Load(path);
|
||
GameObject go = Instantiate(obj) as GameObject;
|
||
|
||
//如果是对话框,默认放在update框下面
|
||
if (name.Equals("NativeConfirmUI"))
|
||
{
|
||
confirmUIGo = go;
|
||
go.transform.SetParent(updateUIGo.transform, false);
|
||
}
|
||
else if (name.Equals("NativeUpdateUI"))
|
||
updateUIGo = go;
|
||
|
||
return go.GetComponent<T>();
|
||
}
|
||
|
||
public static void CloseNativeUI(string name)
|
||
{
|
||
if (name.Equals("NativeConfirmUI"))
|
||
{
|
||
DestroyImmediate(confirmUIGo);
|
||
confirmUIGo = null;
|
||
}
|
||
else if (name.Equals("NativeUpdateUI"))
|
||
{
|
||
DestroyImmediate(updateUIGo);
|
||
updateUIGo = null;
|
||
}
|
||
}
|
||
|
||
public static NativeConfirmUI ShowMessageBox(string title, string context, string confirmText, string cancelText, UnityAction confirmAction, UnityAction cancelAction)
|
||
{
|
||
NativeConfirmUI confirmUI = OpenNativeUI<NativeConfirmUI>("NativeConfirmUI");
|
||
if (confirmUI == null)
|
||
throw new GameException("原生对话框打开失败");
|
||
|
||
confirmUI.Show(title, context, confirmText, cancelText);
|
||
confirmUI.AddOnclickListener(confirmAction, cancelAction);
|
||
|
||
return confirmUI;
|
||
}
|
||
|
||
public void LateUpdate()
|
||
{
|
||
CheckIdleTime();
|
||
}
|
||
}
|
||
} |