iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >基于Unity3D实现仿真时钟详解
  • 886
分享到

基于Unity3D实现仿真时钟详解

Unity3D实现仿真时钟Unity3D实现时钟Unity3D时钟 2023-01-30 18:01:00 886人浏览 安东尼
摘要

目录一、前言二、时钟小工具开发2-1、搭建UI2-2、实现脚本一、前言 今天实现一个时钟工具,其实在之前已经完成了一个简单的时钟工具:【Unity3D应用案例系列】时钟、钟表小组件开

一、前言

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

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

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

可以当个时钟看。

二、时钟小工具开发

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

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时钟的资料请关注编程网其它相关文章!

--结束END--

本文标题: 基于Unity3D实现仿真时钟详解

本文链接: https://www.lsjlt.com/news/178827.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于Unity3D实现仿真时钟详解
    目录一、前言二、时钟小工具开发2-1、搭建UI2-2、实现脚本一、前言 今天实现一个时钟工具,其实在之前已经完成了一个简单的时钟工具:【Unity3D应用案例系列】时钟、钟表小组件开...
    99+
    2023-01-30
    Unity3D实现仿真时钟 Unity3D实现时钟 Unity3D时钟
  • 基于Unity3D如何实现仿真时钟
    本篇内容介绍了“基于Unity3D如何实现仿真时钟”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!时钟小工具开发1、搭建UI新建一个Image...
    99+
    2023-07-05
  • 基于 Agent的Python是怎么实现隔离仿真
    这篇文章给大家介绍基于 Agent的Python是怎么实现隔离仿真,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。我会向你介绍用基于 Agent 的模型理解复杂现象的威力。为此,我们会用到一些 Python,社会学的案例...
    99+
    2023-06-03
  • 基于QT5实现一个时钟桌面
    目录介绍实现代码clock.pro analogclock.h analogclock.cppmain.cpp编译打包编译打包介绍 这是一个简单的时钟运行界面,项...
    99+
    2022-11-13
  • 基于HTML5+CSS3如何实现时钟效果
    这篇文章给大家分享的是有关基于HTML5+CSS3如何实现时钟效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。目的:利用html5,css实现钟摆效果知识点: 1) 利用pos...
    99+
    2022-10-19
  • C语言实现基于控制台的电子时钟
    使用c语言制作一个控制台的电子时钟,供大家参考,具体内容如下 学习了c语言基本语法后,在学习了time.h的库文件,让我产生了想制作一款电子时钟的念头,那好就开始动手操作吧。 使用到...
    99+
    2022-11-13
  • 基于Python实现简单的定时器详解
    所谓定时器,是指间隔特定时间执行特定任务的机制。几乎所有的编程语言,都有定时器的实现。比如,Java有util.Timer和util.TimerTask,JavaScript有set...
    99+
    2022-11-12
  • C语言基于EasyX库实现有图形界面时钟
    本文实例为大家分享了C语言基于EasyX库实现有图形界面时钟的具体代码,供大家参考,具体内容如下 1.目标要求: 1.实现一个显示图像的时钟2.时间与本地时间一致 2.C语言代码: ...
    99+
    2022-11-13
  • 如何基于sqlite实现kafka延时消息详解
    目录1、需求2、实现思路2.1 整体实现思路2.2 程序业务逻辑2.3 实现细节2.4 依赖框架3、性能测试4、部署4.1 系统环境依赖4.2 安装4.3 程序迁移4.4 排查日志5...
    99+
    2022-11-12
  • C语言怎么实现基于控制台的电子时钟
    这篇文章主要介绍“C语言怎么实现基于控制台的电子时钟”,在日常操作中,相信很多人在C语言怎么实现基于控制台的电子时钟问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言怎么实现基于控制台的电子时钟”的疑惑有所...
    99+
    2023-06-30
  • Android基于BaseExpandableListAdapter实现的二级列表仿通话记录功能详解
    本文实例讲述了Android基于BaseExpandableListAdapter实现的二级列表仿通话记录功能。分享给大家供大家参考,具体如下:android SDK中带有这样类似的例子,但是那个还是静态数据,没有实际应用价值,参考意义不大...
    99+
    2023-05-30
    android baseexpandablelistadapter 通话记录
  • C语言基于EasyX库怎么实现有图形界面时钟
    今天小编给大家分享一下C语言基于EasyX库怎么实现有图形界面时钟的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.目标要求...
    99+
    2023-06-29
  • C#基于时间轮调度实现延迟任务详解
    在很多.net开发体系中开发者在面对调度作业需求的时候一般会选择三方开源成熟的作业调度框架来满足业务需求,比如Hangfire、Quartz.NET这样的框架。但是有些时候可能我们只...
    99+
    2022-12-31
    C# 时间轮调度 延迟任务 C#延迟任务 C#延迟
  • 基于GORM实现CreateOrUpdate方法详解
    目录正文GORM 写接口原理CreateSaveUpdate & UpdatesFirstOrInitFirstOrCreate方案一:FirstOrCreate ...
    99+
    2022-11-11
  • 基于nginx反向代理获取用户真实Ip地址详解
    目录引言1.修改Nginx配置:2.java获取客户端Ip附:一个ip工具类总结引言 nginx做反向代理时,默认的配置后端获取到的Ip地址都来自于nginx,用request.ge...
    99+
    2022-11-13
  • 详解基于redis实现分布式锁
    目录前言原理剖析实现编写注解拦截器拦截上述提及工具问题分析前言 为了保证一个在高并发存场景下只能被同一个线程操作,java并发处理提供ReentrantLock或Synchroniz...
    99+
    2022-11-12
  • 基于Python实现自动扫雷详解
    目录准备实现思路窗体截取雷块分割雷块识别扫雷算法实现用Python+OpenCV实现了自动扫雷,突破世界记录,我们先来看一下效果吧。 中级 - 0.74秒 3BV/S=60.81 ...
    99+
    2022-11-12
  • 详解elasticsearch实现基于拼音搜索
    目录1、背景2、安装拼音分词器3、拼音分词器提供的功能4、简单测试一下拼音分词器4.1 dsl4.2 运行结果5、es中分词器的组成6、自定义一个分词器实现拼音和中文的搜索1、创建m...
    99+
    2023-01-16
    elasticsearch 拼音搜索 elasticsearch 搜索
  • 基于Zookeeper实现分布式锁详解
    目录1、什么是Zookeeper?2、Zookeeper节点类型3、Zookeeper环境搭建4、Zookeeper基本使用5、Zookeeper应用场景6、Zookeeper分布式...
    99+
    2022-11-12
  • JavaScript仿京东实现秒杀倒计时案例详解
    功能介绍: 1、这个倒计时是不断变化的,因此需要定时器来自动变化(setInterval) 2、三个黑色的盒子,分别存放时、分秒 3、三个盒子利用innerHTML存入倒计时 &l...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作