Unity 日历插件组件-日期选择器2D(二)
提示:源码附在文后~大家互相学习
目录
前言
一、组件结构
二、使用步骤
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(二)相关推荐
- Unity 日历插件组件-日期选择器2D(一)
提示:源码附在文后~大家互相学习 文章目录 前言 一.组件结构 二.脚本绑定 1.脚本列表 2.绑定说明 总结 前言 工作中时常能用到日期选择的工具,实现灵活选择.设置日期!整理出组件,方便每次使用! ...
- 记录-JQuery日历插件My97DatePicker日期范围限制
对于日期控件,有时会有不能选择今天以前的日期这种需求..... My97DatePicker是一个非常优秀的日历插件,不仅支持多种调用模式,还支持日期范围限制. 常规的调用比较简单,如下所示: 1 & ...
- bootstrap 日历中文_bootstrap日期选择器本地化-中文
最近用bootstrap做项目,所以就顺便搜了下用bootstrap写的日期选择器. 搜到的第一和第二条结果虽然是官网,但上面挂的还是基于bootstrap2的日期选择器(此时为北京时间2017-12 ...
- 《Android开发卷——自定义日期选择器(二)》
(小米手机) (中兴手机) 在上一篇中,我介绍了一般公司都会自定义时间日期选择器,并结合自己所做的项目给大家参考. 工作实录之<Android开发卷--自定义日期选择器(一)>链接:htt ...
- Android 原生组件日期选择器DatePickerDialog代码实现
前言 DatePickerDialog 是android开发工具包里的一个日期组件 使用方法如下 private int year, month, day;private void initDateP ...
- Unity虚拟现实插件VRTK3.3使用教程二:在VR场景中瞬移
在VR场景中瞬移 根据上一篇基本配置完成了, 此时我们只能在这个虚拟世界里看看,还不能移动.想移动怎么办呢? 传送/瞬移 想实现传送或者摸瞬移,最主要的工作就是两步. 给手柄控制器增加光标指针和光标指 ...
- 使用JS实现简单的日历插件
实现简单的日历插件 一.简要介绍 二.基础代码 html部分 js部分 一.简要介绍 实现一个如下图所示的日历,这边主要提供html部分和js部分的代码,css部分大家自行编写哦. 二.基础代码 ...
- 《Android开发卷——自定义日期选择器(三)》
继 <Android开发卷--自定义日期选择器(一)>:http://blog.csdn.net/chillax_li/article/details/19047 ...
- Unity自定义UI组件(六)日历、日期拾取器
前言 考虑到工业项目中可能会利用到类似日历的工具,就比如选取某个时间节点,所以我结合UGUI源码开发了日历工具和日期拾取器工具,简单易用,接口齐全,可中文显示,外观可自定义.只需要导入脚本,即可在Hi ...
最新文章
- 用递归来判断输入的字符串是否是回文
- 【号外】来人鸭~ 本公众号纳新啦~
- Grid SearchCV(网格搜索) 用法代码演示
- 改变mysql数据库用户的权限
- 【Matlab】dde23解时滞时延微分方程
- nginx+tomcat 反向代理 负载均衡配置
- 终于等到你!阿里正式向 Apache Flink 贡献 Blink 源码
- 剑指offer 二叉树的深度
- Python+常用模块(2).md
- 常见的多种在线代码编辑器
- 三菱FX系列PLC教程
- caxa计算机编程,CAXA软件编程实例1
- HbuilderX未检测到手机或模拟器
- 解决表格刷新时抖动闪烁问题
- 测试iphone4电池的软件,iphone4电池容量 iphone4电池的更换【图文】
- 经典策略之一文读懂网格交易
- 打包失败,Gradle构建失败问题良心解决,看完这个一定让你轻松
- 【超详细】零基础自学网络安全,来收藏这一篇就够了(白嫖60G网安教程)
- SecureFX中文乱码,而SecureCRT中文显示正常
- 物联网毕设 STM32题目项目汇总 - 100例