using Framework; using UnityEngine; public class UIActivityNode : UINode { [SerializeField] private int _activityID; public int activityID { get { return _activityID; } set { _activityID = value; logic?.FakeAwake(); // Re-bind or refresh } } private IActivityEntranceNode _logic; public IActivityEntranceNode logic { get { return _logic; } set { _logic = value; _logic?.FakeAwake(); } } void OnActivityIDChanged() { logic?.FakeAwake(); } private void Awake() { // 发送事件,通知逻辑层创建和绑定逻辑实例 EventManager.Instance.Send(EventManager.EventName.ActivityNodeCreated, this); } private void OnEnable() { var start_time = logic?.GetActivityGroupOpenTime(activityID); var end_time = logic?.GetActivityGroupCloseTime(activityID); if (start_time.HasValue && end_time.HasValue) { var curTime = logic.GetCurTime(); bool is_active = curTime >= start_time.Value && curTime <= end_time.Value; gameObject.IsScaleShow(is_active); } } private void OnDestroy() { logic?.FakeOnDestroy(); } }