using System; using System.Collections.Generic; using asap.core; using cfg; using TimeManager; using TMPro; using UniRx; using UnityEngine; using UnityEngine.UI; namespace Activity.HomeEntranceBtn { public abstract class AbstractHomeEntranceBtn : EventButtonResource,IHomeEntranceBtn where TData : IEventData,new () { #region abstract /// /// 关联的 Sentry 类型,子类必须实现 /// protected abstract Type AssociatedSentryType { get; } protected abstract void OnClickBtn(); protected abstract string GetIconName(); /// /// 检查并预加载活动资源(子类实现) /// protected abstract List GetResourceNames(); #endregion #region Data protected AEventDataManager _manager; private TData _data; /// /// 数据属性,子类无需重写,基类自动处理新账号无数据的情况 /// protected virtual TData Data { get { if(_manager!=null) _data = _manager.LoadData(); return _data; } } #endregion #region UIElement [SerializeField] protected TMP_Text textTimer; [SerializeField] protected Button btn; [SerializeField] protected Image icon; #endregion protected CompositeDisposable _disposable; // 缓存数据对象,避免每秒创建新对象 protected TData _cachedData; protected virtual void Awake() { if (!textTimer) textTimer = gameObject.FindChildGameObject("text_time").GetComponent(); if (!btn) btn = gameObject.GetComponent