|  |  |  | 
|---|
|  |  |  | using UnityEngine.UI; | 
|---|
|  |  |  | using System; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | namespace vnxbqy.UI | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public class TimerBehaviour : MonoBehaviour | 
|---|
|  |  |  | { | 
|---|
|  |  |  | [SerializeField] protected Text m_TimeShow; | 
|---|
|  |  |  | public Text timeShow { get { return m_TimeShow; } } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public class TimerBehaviour : MonoBehaviour | 
|---|
|  |  |  | [SerializeField] Pattern m_Pattern = Pattern.English; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | protected DateTime endTime; | 
|---|
|  |  |  | Action onTime; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | float secondTimer = 0f; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void Begin(int seconds, Action _callBack = null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | [SerializeField] protected Text m_TimeShow; | 
|---|
|  |  |  | public Text timeShow { get { return m_TimeShow; } } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | [SerializeField] Pattern m_Pattern = Pattern.English; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | protected DateTime endTime; | 
|---|
|  |  |  | Action onTime; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | float secondTimer = 0f; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void Begin(int seconds, Action _callBack = null) | 
|---|
|  |  |  | endTime = TimeUtility.ServerNow + new TimeSpan(seconds * TimeSpan.TicksPerSecond); | 
|---|
|  |  |  | onTime = _callBack; | 
|---|
|  |  |  | if (endTime > TimeUtility.ServerNow) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | endTime = TimeUtility.ServerNow + new TimeSpan(seconds * TimeSpan.TicksPerSecond); | 
|---|
|  |  |  | onTime = _callBack; | 
|---|
|  |  |  | if (endTime > TimeUtility.ServerNow) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | this.SetActive(true); | 
|---|
|  |  |  | UpdateTimeShow(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | this.SetActive(false); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.SetActive(true); | 
|---|
|  |  |  | UpdateTimeShow(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void Stop() | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | endTime = DateTime.MinValue; | 
|---|
|  |  |  | onTime = null; | 
|---|
|  |  |  | this.SetActive(false); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void LateUpdate() | 
|---|
|  |  |  | public void Stop() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | endTime = DateTime.MinValue; | 
|---|
|  |  |  | onTime = null; | 
|---|
|  |  |  | this.SetActive(false); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void LateUpdate() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (TimeUtility.ServerNow > endTime) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (TimeUtility.ServerNow > endTime) | 
|---|
|  |  |  | if (onTime != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (onTime != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | onTime(); | 
|---|
|  |  |  | onTime = null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.SetActive(false); | 
|---|
|  |  |  | onTime(); | 
|---|
|  |  |  | onTime = null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.SetActive(false); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | secondTimer += Time.deltaTime; | 
|---|
|  |  |  | if (secondTimer > 1f) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | secondTimer += Time.deltaTime; | 
|---|
|  |  |  | if (secondTimer > 1f) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | secondTimer = 0f; | 
|---|
|  |  |  | UpdateTimeShow(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | secondTimer = 0f; | 
|---|
|  |  |  | UpdateTimeShow(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | protected virtual void UpdateTimeShow() | 
|---|
|  |  |  | protected virtual void UpdateTimeShow() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var lastSecond = (float)(endTime - TimeUtility.ServerNow).TotalSeconds; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | switch (m_Pattern) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var lastSecond = (float)(endTime - TimeUtility.ServerNow).TotalSeconds; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | switch (m_Pattern) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | case Pattern.English: | 
|---|
|  |  |  | m_TimeShow.text = TimeUtility.SecondsToHMS(Mathf.RoundToInt(lastSecond)); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case Pattern.Chinese: | 
|---|
|  |  |  | m_TimeShow.text = TimeUtility.SecondsToDHMSCHS(Mathf.RoundToInt(lastSecond)); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | case Pattern.English: | 
|---|
|  |  |  | m_TimeShow.text = TimeUtility.SecondsToHMS(Mathf.RoundToInt(lastSecond)); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case Pattern.Chinese: | 
|---|
|  |  |  | m_TimeShow.text = TimeUtility.SecondsToDHMSCHS(Mathf.RoundToInt(lastSecond)); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public enum Pattern | 
|---|
|  |  |  | { | 
|---|
|  |  |  | English = 0, | 
|---|
|  |  |  | Chinese = 1, | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public enum Pattern | 
|---|
|  |  |  | { | 
|---|
|  |  |  | English = 0, | 
|---|
|  |  |  | Chinese = 1, | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|