提示:源码附在文后~大家互相学习

目录

前言

一、组件结构

二、使用步骤

1.脚本列表

2.绑定说明

1.外层作为总控制层

2.选择日期模块

总结


前言

刚开始使用Unity开发项目,目前工作需求以Unity2D开发为主!发现在以Unity开发的管理系统中,时常要用到日期选择的工具!所以归类提炼不同的实现方式。这款日期选择组件基本实现灵活选择、设置日期(年月日格式)!方便每次使用!


一、组件结构

二、使用步骤

1.脚本列表

2.绑定说明

1.外层作为总控制层

绑定DatePickerUI脚本,控制选择时间反显、反显格式以及时间清空功能。

注释:绑定位置为下图显示!

DatePickerUI核心代码

protected override void Awake(){//info_tex = this.transform.Find("info_tex").GetComponent<Text>();_dateText = this.transform.Find("startDate_tex").GetComponent<Text>();_enddateText = this.transform.Find("endDate_tex").GetComponent<Text>();_calendar = this.transform.Find("calendarUIper").GetComponent<CalendarUI>();_endcalendar = this.transform.Find("endcalendarUIper").GetComponent<CalendarUI>();transform.Find("startCalendar_but").GetComponent<Button>().onClick.AddListener(() =>{//info_tex.text = "";_calendar.gameObject.SetActive(true);_endcalendar.gameObject.SetActive(false);_calendar.onDayClick.AddListener(dateTime => { DateTime = dateTime; });transform.Find("calendarUIper/title/clear_but").GetComponent<Button>().onClick.AddListener(()=> { refreshDateText("1"); });});transform.Find("endCalendar_but").GetComponent<Button>().onClick.AddListener(() =>{//info_tex.text = "";_endcalendar.gameObject.SetActive(true);             _calendar.gameObject.SetActive(false);_endcalendar.onDayClick.AddListener(dateTime => { EndDateTime = dateTime; });transform.Find("endcalendarUIper/title/clear_but").GetComponent<Button>().onClick.AddListener(() => { refreshEndDateText("1"); });}); }public void refreshDateText(String i){if ("".Equals(i)){switch (_calendar.CalendarType){case E_CalendarType.Day:_dateText.text = DateTime.Year + "-" + DateTime.Month + "-" + DateTime.Day;break;case E_CalendarType.Month:_dateText.text = DateTime.Year + "-" + DateTime.Month;break;case E_CalendarType.Year:_dateText.text = DateTime.Year + "";break;}}else {_dateText.text = "";}    _calendar.gameObject.SetActive(false);}public void refreshEndDateText(String i){if ("".Equals(i)){switch (_endcalendar.CalendarType){case E_CalendarType.Day:_enddateText.text = EndDateTime.Year + "-" + EndDateTime.Month + "-" + EndDateTime.Day;break;case E_CalendarType.Month:_enddateText.text = EndDateTime.Year + "-" + EndDateTime.Month;break;case E_CalendarType.Year:_enddateText.text = EndDateTime.Year + "";break;}}else {_enddateText.text = "";}_endcalendar.gameObject.SetActive(false);}

2.选择日期模块

绑定CalendarUI脚本,是实现日期列表加载、切换、选择功能。

注释:绑定位置为下图显示!

CalendarUI核心代码

 private void OnTimeButtonClick(){if (CalendarType == E_CalendarType.Month)CalendarType = E_CalendarType.Year;if (CalendarType == E_CalendarType.Day){CalendarType = E_CalendarType.Month;calendarTypeChange(false);}Refresh();}private void OnNextButtonClick(){if (CalendarType == E_CalendarType.Day)m_selectDT = m_selectDT.AddMonths(1);else if (CalendarType == E_CalendarType.Month)m_selectDT = m_selectDT.AddYears(1);elsem_selectDT = m_selectDT.AddYears(12);Refresh();}private void OnLastButtonClick(){if (CalendarType == E_CalendarType.Day)m_selectDT = m_selectDT.AddMonths(-1);else if (CalendarType == E_CalendarType.Month)m_selectDT = m_selectDT.AddYears(-1);elsem_selectDT = m_selectDT.AddYears(-12);Refresh();}private void WeekGenerator(GameObject weekPrefab, Transform parent){for (int i = 0; i < 7; i++){GameObject week = prefabGenerator(weekPrefab, parent);week.GetComponent<Text>().text = getWeekName(i.ToString());}Destroy(weekPrefab);}private void DayGenerator(GameObject dayPrefab, Transform parent){for (int i = 0; i < 42; i++){GameObject day = prefabGenerator(dayPrefab, parent);DMY dmy = day.AddComponent<DMY>();day.GetComponent<Button>().onClick.AddListener(() =>{m_selectDT = dmy.DateTime;onDayClick.Invoke(dmy.DateTime);Refresh();});_daysPool.Add(dmy);}Destroy(dayPrefab);}private void MonthGenerator(GameObject monthPrefab, Transform parent){for (int i = 0; i < 12; i++){GameObject month = prefabGenerator(monthPrefab, parent);DMY dmy = month.AddComponent<DMY>();month.GetComponent<Button>().onClick.AddListener(() =>{m_selectDT = dmy.DateTime;if (CalendarType == E_CalendarType.Month){CalendarType = E_CalendarType.Day;calendarTypeChange(true);onMonthClick.Invoke(dmy.DateTime);}if (CalendarType == E_CalendarType.Year){CalendarType = E_CalendarType.Month;onYearClick.Invoke(dmy.DateTime);}Refresh();});_monthYearPool.Add(dmy);}Destroy(monthPrefab);}

收获

通过在平台上整理组件,可以利用空余时间归类总结,更进一步梳理出简单的组件结构,巩固认识、加深理解!并在下次使用是快速使用,节约时间!同时可以记录分享!

总结

组件结构简单,层级明朗,便于理解。可更改ui和尺寸用于不同场合。个人总结归纳,便于使用。希望可以拿来直接使用,方便易懂,在开发过程中节约时间、避免重复造轮子~~~

CSDN组件下载:https://download.csdn.net/download/u014641682/87563968

Unity 日历插件组件-日期选择器2D(二)相关推荐

  1. Unity 日历插件组件-日期选择器2D(一)

    提示:源码附在文后~大家互相学习 文章目录 前言 一.组件结构 二.脚本绑定 1.脚本列表 2.绑定说明 总结 前言 工作中时常能用到日期选择的工具,实现灵活选择.设置日期!整理出组件,方便每次使用! ...

  2. 记录-JQuery日历插件My97DatePicker日期范围限制

    对于日期控件,有时会有不能选择今天以前的日期这种需求..... My97DatePicker是一个非常优秀的日历插件,不仅支持多种调用模式,还支持日期范围限制. 常规的调用比较简单,如下所示: 1 & ...

  3. bootstrap 日历中文_bootstrap日期选择器本地化-中文

    最近用bootstrap做项目,所以就顺便搜了下用bootstrap写的日期选择器. 搜到的第一和第二条结果虽然是官网,但上面挂的还是基于bootstrap2的日期选择器(此时为北京时间2017-12 ...

  4. 《Android开发卷——自定义日期选择器(二)》

    (小米手机) (中兴手机) 在上一篇中,我介绍了一般公司都会自定义时间日期选择器,并结合自己所做的项目给大家参考. 工作实录之<Android开发卷--自定义日期选择器(一)>链接:htt ...

  5. Android 原生组件日期选择器DatePickerDialog代码实现

    前言 DatePickerDialog 是android开发工具包里的一个日期组件 使用方法如下 private int year, month, day;private void initDateP ...

  6. Unity虚拟现实插件VRTK3.3使用教程二:在VR场景中瞬移

    在VR场景中瞬移 根据上一篇基本配置完成了, 此时我们只能在这个虚拟世界里看看,还不能移动.想移动怎么办呢? 传送/瞬移 想实现传送或者摸瞬移,最主要的工作就是两步. 给手柄控制器增加光标指针和光标指 ...

  7. 使用JS实现简单的日历插件

    实现简单的日历插件 一.简要介绍 二.基础代码 html部分 js部分 一.简要介绍   实现一个如下图所示的日历,这边主要提供html部分和js部分的代码,css部分大家自行编写哦. 二.基础代码 ...

  8. 《Android开发卷——自定义日期选择器(三)》

                 继 <Android开发卷--自定义日期选择器(一)>:http://blog.csdn.net/chillax_li/article/details/19047 ...

  9. Unity自定义UI组件(六)日历、日期拾取器

    前言 考虑到工业项目中可能会利用到类似日历的工具,就比如选取某个时间节点,所以我结合UGUI源码开发了日历工具和日期拾取器工具,简单易用,接口齐全,可中文显示,外观可自定义.只需要导入脚本,即可在Hi ...

最新文章

  1. 用递归来判断输入的字符串是否是回文
  2. 【号外】来人鸭~ 本公众号纳新啦~
  3. Grid SearchCV(网格搜索) 用法代码演示
  4. 改变mysql数据库用户的权限
  5. 【Matlab】dde23解时滞时延微分方程
  6. nginx+tomcat 反向代理 负载均衡配置
  7. 终于等到你!阿里正式向 Apache Flink 贡献 Blink 源码
  8. 剑指offer 二叉树的深度
  9. Python+常用模块(2).md
  10. 常见的多种在线代码编辑器
  11. 三菱FX系列PLC教程
  12. caxa计算机编程,CAXA软件编程实例1
  13. HbuilderX未检测到手机或模拟器
  14. 解决表格刷新时抖动闪烁问题
  15. 测试iphone4电池的软件,iphone4电池容量 iphone4电池的更换【图文】
  16. 经典策略之一文读懂网格交易
  17. 打包失败,Gradle构建失败问题良心解决,看完这个一定让你轻松
  18. 【超详细】零基础自学网络安全,来收藏这一篇就够了(白嫖60G网安教程)
  19. SecureFX中文乱码,而SecureCRT中文显示正常
  20. 物联网毕设 STM32题目项目汇总 - 100例

热门文章

  1. 平板电脑市场为何销量增长缓慢?平板电脑未解决需求问题
  2. element ui table 中加下拉菜单
  3. win7怎么恢复恢复回收站删除文件
  4. 加快推进工业互联网,图扑“智”绘发展新蓝图
  5. 给我来一段毕业论文致谢词,不能超过300字,重复率越低越好
  6. (二)STM32开发之GPIO控制轰鸣器学习笔记
  7. 小程序素材抓取_odoo自媒体小程序与自媒体号演变
  8. 从 OKR 的角度看,高效签到会议的技巧
  9. 算法设计与分析——全排列问题算法分析(递归调用分析图)
  10. 做好管理其实就这几点,你做到了吗?