150 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | ||
| using System.Collections;
 | ||
| using System.Collections.Generic;
 | ||
| using UnityEngine;
 | ||
| namespace ZTools
 | ||
| {
 | ||
|     [RequireComponent(typeof(ZCalendarModel))]
 | ||
|     public class ZCalendar : MonoBehaviour
 | ||
|     {
 | ||
|         /// <summary>
 | ||
|         /// 数据更新时,可获取到每一个日期,并对其进行操作
 | ||
|         /// </summary>
 | ||
|         public event Action<ZCalendarDayItem> UpdateDateEvent;
 | ||
|         /// <summary>
 | ||
|         /// 可以获取到点击的某一天
 | ||
|         /// </summary>
 | ||
|         public event Action<ZCalendarDayItem> ChoiceDayEvent;
 | ||
|         /// <summary>
 | ||
|         /// 选择区间时间事件
 | ||
|         /// </summary>
 | ||
|         public event Action<ZCalendarDayItem, ZCalendarDayItem> RangeTimeEvent;
 | ||
|         /// <summary>
 | ||
|         /// 日历加载结束
 | ||
|         /// </summary>
 | ||
|         public event Action CompleteEvent;
 | ||
|         /// <summary>
 | ||
|         /// 获取当前选中的天对象
 | ||
|         /// </summary>
 | ||
|         public ZCalendarDayItem CrtTime { get; set; }
 | ||
|         /// <summary>
 | ||
|         /// model
 | ||
|         /// </summary>
 | ||
|         private ZCalendarModel zCalendarModel;
 | ||
|         /// <summary>
 | ||
|         /// controller
 | ||
|         /// </summary>
 | ||
|         private ZCalendarController zCalendarController;
 | ||
|         /// <summary>
 | ||
|         /// 入口
 | ||
|         /// </summary>
 | ||
|         private void Start()
 | ||
|         {
 | ||
|             zCalendarModel = this.GetComponent<ZCalendarModel>();
 | ||
|             zCalendarController = new ZCalendarController()
 | ||
|             {
 | ||
|                 zCalendar = this,
 | ||
|                 zCalendarModel = zCalendarModel,
 | ||
|                 pos = this.transform.localPosition
 | ||
|             };
 | ||
|             zCalendarController.Init();
 | ||
|             // 开启时自动初始化
 | ||
|             if (zCalendarModel.awake2Init)
 | ||
|             {
 | ||
|                 Init();
 | ||
|             }
 | ||
|         }
 | ||
|         /// <summary>
 | ||
|         /// 按照现在时间初始化
 | ||
|         /// </summary>
 | ||
|         public void Init()
 | ||
|         {
 | ||
|             zCalendarController.InitDate(DateTime.Now);
 | ||
|         }
 | ||
|         /// <summary>
 | ||
|         /// 按照DateTime格式初始化日历
 | ||
|         /// </summary>
 | ||
|         public void Init(DateTime dateTime)
 | ||
|         {
 | ||
|             zCalendarController.InitDate(dateTime);
 | ||
|         }
 | ||
|         /// <summary>
 | ||
|         /// 按照YYYY-MM-DD格式初始化日历
 | ||
|         /// </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>
 | ||
|         /// 显示弹窗
 | ||
|         /// </summary>
 | ||
|         public void Show()
 | ||
|         {
 | ||
|             zCalendarController.Show();
 | ||
|         }
 | ||
|         /// <summary>
 | ||
|         /// 隐藏弹窗
 | ||
|         /// </summary>
 | ||
|         public void Hide()
 | ||
|         {
 | ||
|             Debug.Log("调用了");
 | ||
|             zCalendarController.Hide();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 切换时间
 | ||
|         /// </summary>
 | ||
|         /// <param name="obj"></param>
 | ||
|         [Obsolete("事件触发器,请使用UpdateDateEvent获取切换月份时加载的时间对象")]
 | ||
|         public void UpdateDate(ZCalendarDayItem obj)
 | ||
|         {
 | ||
|             if (null != UpdateDateEvent)
 | ||
|             {
 | ||
|                 UpdateDateEvent.Invoke(obj);
 | ||
|             }
 | ||
|         }
 | ||
|         /// <summary>
 | ||
|         /// 日期点击
 | ||
|         /// </summary>
 | ||
|         [Obsolete("事件触发器,请使用ChoiceDayEvent获取当前选择的时间")]
 | ||
|         public void DayClick(ZCalendarDayItem dayItem)
 | ||
|         {
 | ||
|             if (null != ChoiceDayEvent)
 | ||
|             {
 | ||
|                 ChoiceDayEvent.Invoke(dayItem);
 | ||
|             }
 | ||
|             CrtTime = dayItem;
 | ||
|         }
 | ||
|         /// <summary>
 | ||
|         /// 加载结束
 | ||
|         /// </summary>
 | ||
|         [Obsolete("事件触发器,请使用CompleteEvent获取日历加载完成事件")]
 | ||
|         public void DateComplete()
 | ||
|         {
 | ||
|             if (null != CompleteEvent)
 | ||
|             {
 | ||
|                 CompleteEvent.Invoke();
 | ||
|             }
 | ||
|         }
 | ||
|         /// <summary>
 | ||
|         /// 区间日期选择
 | ||
|         /// </summary>
 | ||
|         /// <param name="firstDay"></param>
 | ||
|         /// <param name="secondDay"></param>
 | ||
|         [Obsolete("事件触发器,请使用RangeTimeEvent获取区间时间")]
 | ||
|         public void RangeCalendar(ZCalendarDayItem firstDay, ZCalendarDayItem secondDay )
 | ||
|         {
 | ||
|             if (null != RangeTimeEvent)
 | ||
|             {
 | ||
|                 RangeTimeEvent.Invoke(firstDay, secondDay);
 | ||
|             }
 | ||
|         }
 | ||
|         private void OnDestroy()
 | ||
|         {
 | ||
|             zCalendarController = null;
 | ||
|             GC.Collect();
 | ||
|         }
 | ||
|     }
 | ||
| }
 |