一、创建时钟

准备工作:

新建一个Unity工程项目,这里我使用的是2021.3.4f1c1的版本,以前一直使用的是2020.1.3f1c1的版本,这次用新的版本也是为了熟悉新版本的交互界面,从2021的版本起,交互界面就换了个新样子。一直不习惯用新版的另一个原因还有每次创建或者修改脚本总是比老版本要慢上一大截,我推测应该是新版本Unity底层的反射机制优化的不太好。我这里采用的是3D的空模板,创建好工程后我们就开始制作啦。

1.在场景中添加一个空物体取名为Clock,复原其Transform

 

 

 

2.在Clock下创建一个Cylinder(圆筒)取名为face修改其scale,如下图

 

 

至此我们就已经创建好了一个时钟的表盘啦,有了表盘,接下来我们就来创建刻度标识和指针了

 

3.创建刻度标识,以Cube物体为原型,将其设置为Clock的子物体,并修改其Transform组件,复制物体并调整各自的位置

 

 

 

 4.创建钟表指针,我们以此创建3个空物体(needle_hour、needle_minute、needle_second),在空物体下创建指针物体,我们可以先创建几个不同颜色的材质球Material,这样把材质添加到物体上就能得到不同颜色的指针啦~

 

 

 修改各个指针的大小和位置,这里我将时,分,秒指针以此在y轴上排列,这样有好的空间效果,通过修改指针的父物体Rotation的值,我们就能使指针动起来了。

二、给时钟添加脚本

1.首先在Asset中创建一个Script文件夹(好的文件分类习惯非常重要),在文件夹中创建一个Clock的C# Script脚本,将脚本挂载在Clock上。

 

 

 2.在Clock脚本中声明好3个时钟指针的Transform,并在Inspector窗口中手动为其添加对象引用。

 

 

 3.在脚本中声明用于记录秒,分,时的float变量(这里用float类型是为了后面计算角度)以及代表最大度量的静态变量(其实可以用const)

 

 

 

 声明用于增加时间的变量timerTick

 

 

 

 

 

 

 

这里我在FixedUpdate中让timerTick每次自增,因为FixedUpdte中每帧的时间间隔是0.02因此每执行完50帧就相当于在unity中经过1s,这时就可以更新

时间的值了

                              

 以下是更新时间的方法

 

 

 4.最后在Update中调用方法

 

 创建用于计算角度百分比的的变量

 

最后用360°乘上百分比就是角度的值啦

 

 

 

以下是最终的效果

 

 

我们也可以采用时间系统时间来当作具体的时间值,转换为(float)类型就可以达到连续的效果啦!

 

这是采用系统时间的连续效果

 

 

原文地址:http://www.cnblogs.com/AzuresMK/p/16849453.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性