fairygui源码阅读(4)——Timer

Timer

FairyGUI里面有个很实用的计时器引擎(Timer Engine)。例如:让某个窗口打开之后,过几秒自动关闭的功能就可以用计时器,把关闭窗口的函数放到计时器里,设好关闭的时间即可。

这个计时器的基本原理是,创建一个不在hierarchy里显示的GameObject,名叫[FairyGUI.Timers]。这个GameObject上挂载着计时器引擎脚本TimerEngine,这个TimerEngine是继承于MonoBehaviour的,在Update函数里会调用计时器引擎里面存储的计时器函数。

        public Timers()
        {
            _inst = this;
            gameObject = new GameObject("[FairyGUI.Timers]");
            gameObject.hideFlags = HideFlags.HideInHierarchy;
            gameObject.SetActive(true);
            Object.DontDestroyOnLoad(gameObject);

            _engine = gameObject.AddComponent<TimersEngine>();

            _items = new Dictionary<TimerCallback, Anymous_T>();
            _toAdd = new Dictionary<TimerCallback, Anymous_T>();
            _toRemove = new List<Anymous_T>();
            _pool = new List<Anymous_T>(100);
        }

这是Timers类的构造函数。

    class TimersEngine : MonoBehaviour
    {
        void Update()
        {
            Timers.inst.Update();
        }
    }

这是挂载在GameObject中的TimersEngine脚本。

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦