using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace ZTools { [RequireComponent(typeof(ZCalendarModel))] public class ZCalendar : MonoBehaviour { /// /// ���ݸ���ʱ���ɻ�ȡ��ÿһ�����ڣ���������в��� /// public event Action UpdateDateEvent; /// /// ���Ի�ȡ�������ijһ�� /// public event Action ChoiceDayEvent; /// /// ѡ������ʱ���¼� /// public event Action RangeTimeEvent; /// /// �������ؽ��� /// public event Action CompleteEvent; /// /// ��ȡ��ǰѡ�е������ /// public ZCalendarDayItem CrtTime { get; set; } /// /// model /// private ZCalendarModel zCalendarModel; /// /// controller /// private ZCalendarController zCalendarController; /// /// ��� /// private void Start() { zCalendarModel = this.GetComponent(); zCalendarController = new ZCalendarController() { zCalendar = this, zCalendarModel = zCalendarModel, pos = this.transform.localPosition }; zCalendarController.Init(); // ����ʱ�Զ���ʼ�� Init(); } /// /// ��������ʱ���ʼ�� /// public void Init() { zCalendarController.InitDate(DateTime.Now); } /// /// ����DateTime��ʽ��ʼ������ /// public void Init(DateTime dateTime) { zCalendarController.InitDate(dateTime); } /// /// ����YYYY-MM-DD��ʽ��ʼ������ /// public void Init(string dateTime) { string[] dateTimes = dateTime.Split('-'); zCalendarController.InitDate(new DateTime(int.Parse(dateTimes[0]), int.Parse(dateTimes[1]), int.Parse(dateTimes[2]))); } /// /// ��ʾ���� /// public void Show() { zCalendarController.Show(); } /// /// ���ص��� /// public void Hide() { zCalendarController.Hide(); } /// /// �л�ʱ�� /// /// [Obsolete("�¼�����������ʹ��UpdateDateEvent��ȡ�л��·�ʱ���ص�ʱ�����")] public void UpdateDate(ZCalendarDayItem obj) { if (null != UpdateDateEvent) { UpdateDateEvent.Invoke(obj); } } /// /// ���ڵ�� /// [Obsolete("�¼�����������ʹ��ChoiceDayEvent��ȡ��ǰѡ���ʱ��")] public void DayClick(ZCalendarDayItem dayItem) { if (null != ChoiceDayEvent) { ChoiceDayEvent.Invoke(dayItem); } CrtTime = dayItem; } /// /// ���ؽ��� /// [Obsolete("�¼�����������ʹ��CompleteEvent��ȡ������������¼�")] public void DateComplete() { if (null != CompleteEvent) { CompleteEvent.Invoke(); } } /// /// ��������ѡ�� /// /// /// [Obsolete("�¼�����������ʹ��RangeTimeEvent��ȡ����ʱ��")] public void RangeCalendar(ZCalendarDayItem firstDay, ZCalendarDayItem secondDay ) { if (null != RangeTimeEvent) { RangeTimeEvent.Invoke(firstDay, secondDay); } } /// /// 组件销毁时清理资源 /// private void OnDestroy() { // 清理事件订阅,避免内存泄漏 UpdateDateEvent = null; ChoiceDayEvent = null; RangeTimeEvent = null; CompleteEvent = null; // 清理引用 zCalendarController = null; zCalendarModel = null; CrtTime = null; // 移除 GC.Collect() 调用 // .NET 的垃圾回收器会自动管理内存,不需要手动调用 GC.Collect() // 频繁调用 GC.Collect() 会导致垃圾回收效率下降,影响应用程序性能 // 如果有非托管资源需要释放,应该实现 IDisposable 接口,使用 using 语句确保资源释放 } } }