using CaoCao;
using CaoCao.Runtime;
using System;
using UnityEngine;
using UnityEngine.Events;
namespace Game
{
///
/// 游戏入口。
///
public partial class AppEntry : MonoBehaviour
{
//public static List GameServerList = new List();
public static int LastLoginServerId = 0;
public static BuiltinDataComponent BuiltinData
{
get;
private set;
}
public static ResourcesComponent Resources
{
get;
private set;
}
public static UIComponent UI
{
get;
private set;
}
public static MainPlayerComponent MainPlayer
{
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();
Resources = GameEntry.GetComponent();
MainPlayer = GameEntry.GetComponent();
UI = GameEntry.GetComponent();
}
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 > 60 * 60 * 1000)
{
Log.Info("待机超过2分钟,手动调用GC");
IdleTime = Ticktime;
GCTime = Ticktime;
UnityEngine.Resources.UnloadUnusedAssets();
GC.Collect();
}
}
public void LateUpdate()
{
CheckIdleTime();
}
}
}