//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, December 28, 2017 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; namespace vnxbqy.UI { public class HeadUpStorySign : HUDBehaviour { [SerializeField] float m_Duration = 1f; float endTime = 0f; public static void Display(Transform _target, Camera _camera) { var bubble = HeadUpStorySignPool.Require(); bubble.transform.SetParentEx(WindowCenter.Instance.uiRoot.bossShowCanvas.transform, Vector3.zero, Vector3.zero, Vector3.one); bubble.SetActive(true); bubble.Show(_target, _camera); } public virtual void Show(Transform _target, Camera _camera) { base.target = _target; base.offset = Vector3.zero; base.camera = _camera; endTime = Time.time + m_Duration; this.SetActive(true); SyncPosition(true); } protected override void LateUpdate() { base.LateUpdate(); if (Time.time > endTime) { HeadUpStorySignPool.Recycle(this.gameObject); } } } public class HeadUpStorySignPool { static GameObjectPoolManager.GameObjectPool pool = null; public static HeadUpStorySign Require() { if (pool == null) { var prefab = UILoader.LoadPrefab("HeadUpStorySign"); if (prefab != null) { pool = GameObjectPoolManager.Instance.RequestPool(prefab); } } if (pool != null) { var instance = pool.Request(); return instance.GetComponent(); } else { return null; } } public static void Recycle(GameObject _gameObject) { if (pool != null) { pool.Release(_gameObject); _gameObject.transform.SetParent(null); _gameObject.SetActive(false); } } public static void Clear() { if (pool != null) { pool.Clear(); pool = null; } } } }