Unity3D应用之时钟与钟表小组件的使用教程
作者:恬静的小魔龙 发布时间:2023-05-15 04:43:35
标签:Unity3D,时钟
一、前言
又见面了哈,今天为大家介绍时钟、钟表的实现方法教程。
实现的方法有很多,这里只是提供了一个思路,本着抛砖引玉的心态,希望能和大家共同学习。
二、效果图及源工程下载
效果图:
源工程下载:
https://pan.baidu.com/s/1x0AwvjoUkR5VBC8xnSQw7Q 提取码:mhns
三、实现
3-1 场景搭建
使用Cylinder搭建一个时钟面,然后使用TextMesh设置小时数,最后使用长短不一的Cube做成时针、分针、秒针。
在这里需要说明的第一点是,需要将时针、分针、秒针拖到对应的父物体下,做成预制体,因为代码是使用Quaternion.AngleAxis函数进行绕轴旋转,所以直接旋转针的话,就变成自转了,所以需要旋转它的父物体,这样子物体就跟着转了,将父物体的坐标设置为0,0,0,那么子物体就是以中心点旋转了。
搭建后如下图所示:
3-2 代码实现
using System;
using UnityEngine;
public class Clock : MonoBehaviour
{
private GameObject HourHands;//时针
private GameObject MinuteHand;//分针
private GameObject SecondHand;//秒针
void Start()
{
HourHands = GameObject.Find("时钟/时针");
MinuteHand = GameObject.Find("时钟/分针");
SecondHand = GameObject.Find("时钟/秒针");
}
void Update()
{
TimeSpan time = DateTime.Now.TimeOfDay;
HourHands.transform.localRotation = Quaternion.AngleAxis(30 * time.Hours, Vector3.up);
MinuteHand.transform.localRotation = Quaternion.AngleAxis(6 * time.Minutes, Vector3.up);
SecondHand.transform.localRotation= Quaternion.AngleAxis(6 * time.Seconds, Vector3.up);
}
}
没错,就是这几行代码就实现了:
四、后言
代码依旧延续简约风格,不多写一行代码
整体思路也很简单,就是获取到当前时间,然后让时针分针秒针转到指定的角度即可。
来源:https://blog.csdn.net/q764424567/article/details/117330118


猜你喜欢
- 设计模式分类:创建型模式。结构型模式。行为模式。23种设计模式,如何记。面向对象的系统中有很多对象,创建型模式解决的问题就是如何创建对象,何
- 方式一:基于现有控件进行扩展,如基于button进行扩展,UI可直接用xmal进行编辑设计,逻辑用xaml.cs进行编辑方法二:直接创建wp
- 在AccessibilityService中我们可以做模拟操作,下面记述下通过AccessibilityService实现微信发红包的功能1
- 启动第二个服务时就会报如下的错误:Server failed to start for port 8080: Address already
- Android应用强制更新的用途十分广泛,特别上刚上线的应用肯定会存在或多或少的bug,特别是涉及移动支付这一块的内容,如果出错了会造成比较
- 前言Java多线程实现方式主要有四种:① 继承Thread类、实现Runnable接口② 实现Callable接口通过FutureTask包
- 1、pom.xml文件添加distributionManagement节点。模块项目中如果存在父子项目,且父子项目的jar包都需要上传到 *
- 欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demo
- 前言最近遇到个小问题,要为几十个文本框添加相同的失去焦点事件,常规的办法是在VS的事件管理器里面添加,但那样太繁琐了,几十个文本框,要加几十
- 1 简介Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库。两者在分布式、微服务架构中使用率极
- 1. Limit实现分页1.1 为什么需要分页 减少数据的处理量1.2 使用Limit实现分页select * from user limi
- 这是一次阿里面试里被问到的题目,在我的印象中,final修饰的方法是不能被子类重写的。如果在子类中重写final修饰的方法,在编译阶段就会提
- //执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。其中静态代码块只执行一次。构造代码块在每
- 代码从windows下visual studio到andriod平台迁移实现步骤:前言前言也是迁言,从windows的visual stud
- 如下所示:package cn.sunzn.md5;import java.security.MessageDigest;import ja
- 下面就WPF项目框架搭建步骤一步一步的分享给大家。在WPF项目开发中最常用的开发模式无疑是MVVM模式, MVVM模式开发的好处
- 启动协程的基本方式1.GlobalScope.launch代码示例:fun testGlobalScope() {  
- 今天做项目的时候,遇到一个问题,如果我调用某个服务的接口,但是这个服务挂了,同时业务要求这个接口的结果是必须的,那我该怎么办呢,答案是通过h
- 前言:CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负
- 首先对于一个SpringBoot工程来说,最明显的标志的就是 @SpringBootApplication它标记了这是一个SpringBoo