using Thousandto.Core.Base; using System; using System.Collections; using System.Collections.Generic; using System.Text; using UnityEngine; using PathUtils = UnityEngine.Gonbest.MagicCube.PathUtils; using CoroutinePool = UnityEngine.Gonbest.MagicCube.CoroutinePool; using StringUtils = UnityEngine.Gonbest.MagicCube.StringUtils; namespace Thousandto.Plugins.Common { /// /// UISprite组件的alpha动画 /// public class NoticeIconAlphaAnim { //所有的提示动画,每一个聊天对象都有一个 private List _noticeList; //是否显示私聊提示动画 private bool _enabelNotice; private static NoticeIconAlphaAnim _instance; public static NoticeIconAlphaAnim Instance { get { if (_instance == null) { _instance = new NoticeIconAlphaAnim(); } return _instance; } set { NoticeIconAlphaAnim._instance = value; } } private NoticeIconAlphaAnim() { Initialize(); } public void Initialize() { _enabelNotice = true; _noticeList = new List(); CoroutinePool.AddTask(showNotice()); } public void Unitialize() { _enabelNotice = false; if (_noticeList != null) { _noticeList.Clear(); } } public void AddNoticeIcon(UISprite go) { if (!_noticeList.Contains(go)) { _noticeList.Add(go); TweenAlpha sa = go.gameObject.RequireComponent(); sa.from = 1.0f; sa.to = 0.0f; sa.enabled = true; sa.style = UITweener.Style.PingPong; sa.PlayForward(); } } IEnumerator showNotice() { yield return null; while (_enabelNotice) { yield return new WaitForSeconds(0.2f); for (int i = _noticeList.Count - 1; i >= 0; i--) { try { if (_noticeList[i] == null || !_noticeList[i].gameObject.activeInHierarchy) { _noticeList.RemoveAt(i); continue; } } catch (System.Exception ex) { UnityEngine.Debug.LogError(ex.StackTrace); _noticeList.RemoveAt(i); continue; } } } } } }