返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >基于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://lsjlt.com/news/178827.html(转载时请注明来源链接)

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

猜你喜欢
  • 基于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+
    2024-04-02
  • 基于HTML5+CSS3如何实现时钟效果
    这篇文章给大家分享的是有关基于HTML5+CSS3如何实现时钟效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。目的:利用html5,css实现钟摆效果知识点: 1) 利用pos...
    99+
    2024-04-02
  • 基于Unity3D实现3D照片墙效果
    一、前言 Unity3D不仅仅可以开发游戏,还有非常多的开发方向,秉承着兴趣为先,将可以使用Unity制作的各种应用案例,分享如何进行开发,如何实现,希望大家可以在感兴趣的地方,学习...
    99+
    2024-04-02
  • 基于Android实现仿QQ5.0侧滑
    本课程将带领大家通过自定义控件实现QQ5.0侧滑菜单,课程将循序渐进,首先实现最普通的侧滑菜单,然后引入属性动画与拖动菜单效果相结合,最终实现QQ5.0侧滑菜单效果。通过本课程...
    99+
    2022-06-06
    Android
  • C语言实现基于控制台的电子时钟
    使用c语言制作一个控制台的电子时钟,供大家参考,具体内容如下 学习了c语言基本语法后,在学习了time.h的库文件,让我产生了想制作一款电子时钟的念头,那好就开始动手操作吧。 使用到...
    99+
    2024-04-02
  • Python基础 用Python实现时钟
    语言:Python IDE:Python.IDE编写时钟程序,要求根据时间动态更新 代码思路 需求:5个Turtle对象, 1个绘制外表盘+3个模拟表上针+1个输出文字 Step1:建立Turtle对象并初始化 Step2:静态表盘绘制...
    99+
    2023-01-31
    时钟 基础 Python
  • 基于Python实现简单的定时器详解
    所谓定时器,是指间隔特定时间执行特定任务的机制。几乎所有的编程语言,都有定时器的实现。比如,Java有util.Timer和util.TimerTask,JavaScript有set...
    99+
    2024-04-02
  • 基于Unity3D如何实现3D照片墙效果
    这篇文章主要介绍了基于Unity3D如何实现3D照片墙效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、前言Unity3D不仅仅可以开发游戏,还有非常多的开发方向,秉承着...
    99+
    2023-06-29
  • C语言基于EasyX库实现有图形界面时钟
    本文实例为大家分享了C语言基于EasyX库实现有图形界面时钟的具体代码,供大家参考,具体内容如下 1.目标要求: 1.实现一个显示图像的时钟2.时间与本地时间一致 2.C语言代码: ...
    99+
    2024-04-02
  • 如何基于sqlite实现kafka延时消息详解
    目录1、需求2、实现思路2.1 整体实现思路2.2 程序业务逻辑2.3 实现细节2.4 依赖框架3、性能测试4、部署4.1 系统环境依赖4.2 安装4.3 程序迁移4.4 排查日志5...
    99+
    2024-04-02
  • Android基于OpenCV实现非真实渲染
    目录非真实渲染API边缘保留滤波细节增强素描铅笔画风格化操作效果非真实渲染 非真实感渲染(Non Photorealistic Rendering,简称NPR),是指利用计算机模...
    99+
    2024-04-02
  • 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
  • 基于GORM实现CreateOrUpdate方法详解
    目录正文GORM 写接口原理CreateSaveUpdate & UpdatesFirstOrInitFirstOrCreate方案一:FirstOrCreate ...
    99+
    2024-04-02
  • C#基于时间轮调度实现延迟任务详解
    在很多.net开发体系中开发者在面对调度作业需求的时候一般会选择三方开源成熟的作业调度框架来满足业务需求,比如Hangfire、Quartz.NET这样的框架。但是有些时候可能我们只...
    99+
    2022-12-31
    C# 时间轮调度 延迟任务 C#延迟任务 C#延迟
  • 基于Unity3D实现3D迷宫小游戏的示例代码
    目录一、前言二、构思三、正式开发3-1、搭建场景3-2、设置出入口3-3、添加角色3-4、实现角色移动3-5、出入口逻辑四、总结一、前言 闲来无事,从零开始整个《3D迷宫》小游戏。 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作