165 lines
5.5 KiB
C#
165 lines
5.5 KiB
C#
using System;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
namespace ZTools
|
||
{
|
||
[RequireComponent(typeof(ZCalendarModel))]
|
||
public class ZCalendar : MonoBehaviour
|
||
{
|
||
/// <summary>
|
||
/// <20><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ɻ<EFBFBD>ȡ<EFBFBD><C8A1>ÿһ<C3BF><D2BB><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
|
||
/// </summary>
|
||
public event Action<ZCalendarDayItem> UpdateDateEvent;
|
||
/// <summary>
|
||
/// <20><><EFBFBD>Ի<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ijһ<C4B3><D2BB>
|
||
/// </summary>
|
||
public event Action<ZCalendarDayItem> ChoiceDayEvent;
|
||
/// <summary>
|
||
/// ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>¼<EFBFBD>
|
||
/// </summary>
|
||
public event Action<ZCalendarDayItem, ZCalendarDayItem> RangeTimeEvent;
|
||
/// <summary>
|
||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
|
||
/// </summary>
|
||
public event Action CompleteEvent;
|
||
/// <summary>
|
||
/// <20><>ȡ<EFBFBD><C8A1>ǰѡ<C7B0>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
/// </summary>
|
||
public ZCalendarDayItem CrtTime { get; set; }
|
||
/// <summary>
|
||
/// model
|
||
/// </summary>
|
||
private ZCalendarModel zCalendarModel;
|
||
/// <summary>
|
||
/// controller
|
||
/// </summary>
|
||
private ZCalendarController zCalendarController;
|
||
/// <summary>
|
||
/// <20><><EFBFBD>
|
||
/// </summary>
|
||
private void Start()
|
||
{
|
||
zCalendarModel = this.GetComponent<ZCalendarModel>();
|
||
zCalendarController = new ZCalendarController()
|
||
{
|
||
zCalendar = this,
|
||
zCalendarModel = zCalendarModel,
|
||
pos = this.transform.localPosition
|
||
};
|
||
zCalendarController.Init();
|
||
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ʼ<EFBFBD><CABC>
|
||
|
||
|
||
Init();
|
||
|
||
}
|
||
/// <summary>
|
||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ʼ<EFBFBD><CABC>
|
||
/// </summary>
|
||
public void Init()
|
||
{
|
||
zCalendarController.InitDate(DateTime.Now);
|
||
}
|
||
/// <summary>
|
||
/// <20><><EFBFBD><EFBFBD>DateTime<6D><65>ʽ<EFBFBD><CABD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
/// </summary>
|
||
public void Init(DateTime dateTime)
|
||
{
|
||
zCalendarController.InitDate(dateTime);
|
||
}
|
||
/// <summary>
|
||
/// <20><><EFBFBD><EFBFBD>YYYY-MM-DD<44><44>ʽ<EFBFBD><CABD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
/// </summary>
|
||
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])));
|
||
}
|
||
/// <summary>
|
||
/// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
||
/// </summary>
|
||
public void Show()
|
||
{
|
||
zCalendarController.Show();
|
||
}
|
||
/// <summary>
|
||
/// <20><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>
|
||
/// </summary>
|
||
public void Hide()
|
||
{
|
||
zCalendarController.Hide();
|
||
}
|
||
|
||
/// <summary>
|
||
/// <20>л<EFBFBD>ʱ<EFBFBD><CAB1>
|
||
/// </summary>
|
||
/// <param name="obj"></param>
|
||
[Obsolete("<22>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>UpdateDateEvent<6E><74>ȡ<EFBFBD>л<EFBFBD><D0BB>·<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ص<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>")]
|
||
public void UpdateDate(ZCalendarDayItem obj)
|
||
{
|
||
if (null != UpdateDateEvent)
|
||
{
|
||
UpdateDateEvent.Invoke(obj);
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// <20><><EFBFBD>ڵ<EFBFBD><DAB5>
|
||
/// </summary>
|
||
[Obsolete("<22>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ChoiceDayEvent<6E><74>ȡ<EFBFBD><C8A1>ǰѡ<C7B0><D1A1><EFBFBD>ʱ<EFBFBD><CAB1>")]
|
||
public void DayClick(ZCalendarDayItem dayItem)
|
||
{
|
||
if (null != ChoiceDayEvent)
|
||
{
|
||
ChoiceDayEvent.Invoke(dayItem);
|
||
}
|
||
CrtTime = dayItem;
|
||
}
|
||
/// <summary>
|
||
/// <20><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
|
||
/// </summary>
|
||
[Obsolete("<22>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>CompleteEvent<6E><74>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>")]
|
||
public void DateComplete()
|
||
{
|
||
if (null != CompleteEvent)
|
||
{
|
||
CompleteEvent.Invoke();
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
|
||
/// </summary>
|
||
/// <param name="firstDay"></param>
|
||
/// <param name="secondDay"></param>
|
||
[Obsolete("<22>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>RangeTimeEvent<6E><74>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>")]
|
||
public void RangeCalendar(ZCalendarDayItem firstDay, ZCalendarDayItem secondDay )
|
||
{
|
||
if (null != RangeTimeEvent)
|
||
{
|
||
RangeTimeEvent.Invoke(firstDay, secondDay);
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 组件销毁时清理资源
|
||
/// </summary>
|
||
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 语句确保资源释放
|
||
}
|
||
}
|
||
}
|