using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine.Events;
|
using UnityEngine;
|
|
public class SnxxzGame : SingletonMonobehaviour<SnxxzGame>
|
{
|
private event UnityAction m_UpdateActions;
|
private event UnityAction m_LateUpdateActions;
|
private event UnityAction m_OnDrawGizmosActions;
|
private event UnityAction onApplicationOutEvent;
|
|
private void Awake()
|
{
|
#if UNITY_EDITOR
|
gameObject.AddMissingComponent<RuntimeLogUtility>();
|
#endif
|
|
TargetBriefInfo.Init();
|
ExperienceGetBehaviour.Init();
|
SpGetBehaviour.Init();
|
BossAreaMark.Init();
|
HeroNearDeathBehaviour.Init();
|
}
|
|
private void Update()
|
{
|
float _realTime = Time.realtimeSinceStartup;
|
Vector4 _timeVec4 = new Vector4(_realTime * .05f, _realTime, _realTime * 2f, _realTime * 3f);
|
Shader.SetGlobalVector("_RealTime", _timeVec4);
|
|
if (m_UpdateActions != null)
|
{
|
m_UpdateActions();
|
}
|
}
|
|
private void LateUpdate()
|
{
|
if (m_LateUpdateActions != null)
|
{
|
m_LateUpdateActions();
|
}
|
}
|
|
private void OnDrawGizmos()
|
{
|
if (m_OnDrawGizmosActions != null)
|
{
|
m_OnDrawGizmosActions();
|
}
|
}
|
|
protected sealed override void OnDestroy()
|
{
|
base.OnDestroy();
|
m_UpdateActions = null;
|
m_LateUpdateActions = null;
|
m_OnDrawGizmosActions = null;
|
}
|
|
public void AddUpdateAction(UnityAction method)
|
{
|
m_UpdateActions += method;
|
}
|
|
public void RemoveUpdateAction(UnityAction method)
|
{
|
m_UpdateActions -= method;
|
}
|
|
public void AddLateUpdateAction(UnityAction method)
|
{
|
m_LateUpdateActions += method;
|
}
|
|
public void RemoveLateUpdateAction(UnityAction method)
|
{
|
m_LateUpdateActions -= method;
|
}
|
|
public void AddOnDrawGizmosAction(UnityAction method)
|
{
|
m_OnDrawGizmosActions += method;
|
}
|
|
public void RemoveOnDrawGizmosAction(UnityAction method)
|
{
|
m_OnDrawGizmosActions -= method;
|
}
|
|
public void AddApplicationOutAction(UnityAction method)
|
{
|
onApplicationOutEvent += method;
|
}
|
|
public void RemoveApplicationOutAction(UnityAction method)
|
{
|
onApplicationOutEvent -= method;
|
}
|
|
public void StartTimePause(float lastTime)
|
{
|
StopTimePause();
|
StartCoroutine("DoTimePause", lastTime);
|
}
|
|
private void StopTimePause()
|
{
|
StopCoroutine("TimePause");
|
Time.timeScale = 1;
|
}
|
|
private IEnumerator DoTimePause(float lastTime)
|
{
|
Time.timeScale = 0;
|
float _startTime = Time.realtimeSinceStartup;
|
while (Time.realtimeSinceStartup - _startTime < lastTime)
|
{
|
yield return null;
|
}
|
Time.timeScale = 1;
|
}
|
|
private void OnApplicationQuit()
|
{
|
if (MaterialUtility.hudMaterial != null)
|
{
|
MaterialUtility.hudMaterial.SetTexture("_Tex1", null);
|
MaterialUtility.hudMaterial.SetTexture("_Tex2", null);
|
}
|
|
GameNetSystem.Instance.Disconnect();
|
|
if (onApplicationOutEvent != null)
|
{
|
onApplicationOutEvent();
|
}
|
}
|
|
private void OnApplicationPause(bool pause)
|
{
|
if (!pause)
|
{
|
#if !UNITY_EDITOR && UNITY_ANDROID
|
ResolutionUtility.AdjustResolution();
|
#endif
|
}
|
|
}
|
|
private void OnApplicationFocus(bool focus)
|
{
|
if (focus)
|
{
|
PlayerDatas.Instance.RequestWorldTick();
|
}
|
}
|
|
}
|