推荐阅读

  • CSDN主页
  • GitHub开源地址
  • Unity3D插件分享
  • 简书地址
  • 我的个人博客

大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

一、前言

今天实现一个时钟工具,其实在之前已经完成了一个简单的时钟工具:【Unity3D应用案例系列】时钟、钟表小组件开发。

那么,今天的这个小工具跟之前的有啥区别呢?

之前的时钟,是模拟真实时间时针分针秒针的旋转,比如:


可以当个时钟看。

二、时钟小工具开发

今天实现一个可以设置旋转到指定的时间下的表盘,简单说就是时钟定时

资源、 插件、源工程已经上传CSDN,可以自行下载:
https://download.csdn.net/download/q764424567/87404431

2-1、搭建UI

新建一个Image,命名为Image_Clock(名字随意),作为时针和分针的父节点,设置宽高为512:

在Image_Clock节点下新建Image_Hour和Image_Minute,设置宽高为512:

在它们的节点下分别新建一个Image,设置适合的宽高,位置放到表盘中心:

2-2、实现脚本

新建脚本命名SimClock.cs,双击打开脚本编辑代码:

using UnityEngine;
using System.Collections;
using System;
using UniRx;public class SimClock : MonoBehaviour
{/// <summary>/// 时针/// </summary>[SerializeField]private Transform HourHands;/// <summary>/// 分针/// </summary>[SerializeField]private Transform MinuteHands;/// <summary>/// 时针的角度/// </summary>private Quaternion HourHandsAngle;/// <summary>/// 分针的角度/// </summary>private Quaternion MinuteHandsAngle;/// <summary>/// 是否初始化了/// </summary>private bool isInit = false;/// <summary>/// 是否停止了/// </summary>private bool isStopClock = true;/// <summary>/// 初始化/// </summary>private void Init(){HourHandsAngle = HourHands.rotation;MinuteHandsAngle = MinuteHands.rotation;}private void Start(){//设置分钟 和完成的秒数SetTime(300, 6, () => { Debug.Log("完成"); });}/// <summary>/// 恢复角度/// </summary>private void RecoverAngles(){HourHands.localEulerAngles = Vector3.zero;MinuteHands.localEulerAngles = Vector3.zero;}/// <summary>/// 设置时间/// </summary>/// <param name="minute">设置分钟数</param>/// <param name="seconds">完成秒数</param>/// <param name="onComplete">委托函数</param>public void SetTime(float minute, float seconds, Action onComplete){if (isInit == false)Init();if (isStopClock == false) return;isStopClock = false;RecoverAngles();// 角度 = 分钟 / 60秒转动周数 * 360度float angles = minute / 60 * 360;// 转动的角度 = 角度 / 转动秒数 * 0.1秒转动的角度float interval = angles / seconds * 0.1f;float count = 0;IDisposable dispose = null;dispose = Observable.Interval(TimeSpan.FromSeconds(0.1f)).Subscribe(param => {MinuteHands.Rotate(Vector3.back, interval);HourHands.Rotate(Vector3.back, (interval / 360) * (360 / 12));count += interval;if (count >= angles){isStopClock = true;onComplete();dispose.Dispose();}});}
}

注意:因为脚本用到了UniRx插件,所以需要导入插件,在文章开始提到的资源包中已经有插件了。当然,也可以去https://github.com/neuecc/UniRx/releases下载,然后导入到项目中。

将脚本附到Hiearchy视图的Image_Clock对象上,将时针和分针对象拖进去:

运行后结果:

三、后记

本篇文章实现了一个时钟小工具,还有可以完善的地方,欢迎提出宝贵意见。


你的点赞就是对博主的支持,有问题记得留言:

博主主页有联系方式。

博主还有跟多宝藏文章等待你的发掘哦:

专栏 方向 简介
Unity3D开发小游戏 小游戏开发教程 分享一些使用Unity3D引擎开发的小游戏,分享一些制作小游戏的教程。
Unity3D从入门到进阶 入门 从自学Unity中获取灵感,总结从零开始学习Unity的路线,有C#和Unity的知识。
Unity3D之UGUI UGUI Unity的UI系统UGUI全解析,从UGUI的基础控件开始讲起,然后将UGUI的原理,UGUI的使用全面教学。
Unity3D之读取数据 文件读取 使用Unity3D读取txt文档、json文档、xml文档、csv文档、Excel文档。
Unity3D之数据集合 数据集合 数组集合:数组、List、字典、堆栈、链表等数据集合知识分享。
Unity3D之VR/AR(虚拟仿真)开发 虚拟仿真 总结博主工作常见的虚拟仿真需求进行案例讲解。
Unity3D之插件 插件 主要分享在Unity开发中用到的一些插件使用方法,插件介绍等
Unity3D之日常开发 日常记录 主要是博主日常开发中用到的,用到的方法技巧,开发思路,代码分享等
Unity3D之日常BUG 日常记录 记录在使用Unity3D编辑器开发项目过程中,遇到的BUG和坑,让后来人可以有些参考。

【Unity3D小工具】Unity3D中实现仿真时钟、表盘、仿原神时钟相关推荐

  1. 怎样在计算机桌面上添加小工具日历,如何在电脑桌面添加时钟,日历等小工具。 在电脑桌面添加时钟,日历等小工具的方法。...

    今天给大家带来如何在电脑桌面添加时钟,日历等小工具.,在电脑桌面添加时钟,日历等小工具的方法.,让您轻松解决问题. 摆脱电脑右下角的死板数字时间,在电脑桌面上放一个可以移动的立体时钟,想起来就帅呆了~ ...

  2. 使用GGE开发Google小工具(Google Gadget)

    原文链接:http://hi.baidu.com/shirdrn/blog/item/9c144dfc1607e984b901a02d.html 刚开始研究Google的OpenSocial,发现还要 ...

  3. WPF:全文翻译小工具

    我一直使用灵格斯电子词典,里面有个全文翻译的功能,能选择Google,Yahoo等等很多翻译的功能.觉得Google翻译得最好.找了一点资料,利用WPF实现类似的功能,支持52种语言. 灵格斯全文翻译 ...

  4. C#在透明窗体WinForm上面画图(电子尺小工具的实现)

    前几天要做一个微信调一调的外挂,里面用到了尺子测量距离,然后就自己下载了一个电子尺,最近要升级我的跳一跳外挂,然后就准备自己做一个电子尺,嵌入到我的外挂里面,在嵌入到我的外挂之前,我自己做了一个完整版 ...

  5. 【Unity3D小功能】Unity3D中在创建完项目后自动创建文件夹列表

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦. 一.前言 ...

  6. 【Unity3D小技巧】Unity3D中Animation和Animator动画的播放、暂停、倒放控制

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦. 一.前言 ...

  7. 【Unity3D小功能】Unity3D中实现UI擦除效果、刮刮卡功能

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦. 一.前言 ...

  8. 在计算机桌面上添加小工具日历,实用桌面小工具时钟日历在win7中的添加方法...

    我们在win7系统的使用中,小伙伴们都是知道的系统可以直接选择安装不同的小工具在电脑中使用,比如电脑中的时钟日历等都是可以直接安装在桌面来使用的牡丹石有小伙伴对于时钟日历不知道是在哪里添加到桌面的,对 ...

  9. Unity3D研究院之Unity中连接本地或局域网MySQL数据库

    用户名 Email 游戏蛮牛 手机端 开启辅助访问 腾讯QQ 立即注册 登录 用户名 自动登录  找回密码 密码 登录  注册帐号 [Unity5.X版本开始预售啦!] 扫一扫,访问微社区 </ ...

最新文章

  1. Swift从零开始学习_08(代理协议传值)
  2. Arduino可穿戴开发入门教程LilyPad和LilyPad Simple的介绍
  3. java.lang.OutOfMemoryError处理错误
  4. linux磁盘分区表解读:只占64字节
  5. php 链接excel表格数据,php 怎么把数据导出到excel表格?php 连接 excel表格数据库数据...
  6. 7-4 递增序列 (15 分)
  7. tableau示例超市数据在哪儿_超市运营分析 -- Tableau 实战
  8. [机器学习笔记] Note2--单变量线性回归
  9. 修改、读取txt文档
  10. tiptop 编译运行_putty终于让我的TIPTOP脱离虚拟机在64位上运行了。
  11. html 打开页面光标自动选中输入框_Python自动部署码云:
  12. 最全中文leetcode解题攻略:思路知识点代码都有,搞定AI大厂笔试
  13. web逻辑思维题目_逻辑思维训练500题
  14. Kindle wifi 连接不上的问题
  15. JVM内存结构(1.8)
  16. .webp格式图片详解
  17. pdf照片显示正常打印时被翻转_2020年二级建造师执业资格考试打印准考证的10点注意事项!...
  18. python oled_树莓派使用 OLED 屏显示图片及文字
  19. Win10 点击任务栏固定的文件夹资源管理器就重启
  20. ssm个人微空间图片相册共享系统

热门文章

  1. 【网络技术】(5)身份认证技术与访问控制------数字签名技术
  2. 代数几何:Affine Variety 和 Groebner Basis
  3. C语言-浅谈文件IO
  4. 左右可以滑动半年的超级日历,支持日历部分收起和自动重定向为北京时间
  5. 怎样用计算机排名,小红书排名软件教程,小红书关键词排名软件怎么用
  6. 大一用C#编写的斗地主程序
  7. 黑客独角兽_写作是产品设计师真正的独角兽技能
  8. ThinkPHP框架漏洞总结
  9. 波士顿房价的三种预测方式(模型预测,最小二乘法,多元线性回归)
  10. P2P分布式资源存储项目设计收获