欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Unity3D實現(xiàn)仿真時鐘詳解

 更新時間:2023年01月30日 16:58:44   作者:恬靜的小魔龍  
這篇文章主要為大家詳細介紹了如何利用Unity3D模擬實現(xiàn)一個簡單是時鐘效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

一、前言

今天實現(xiàn)一個時鐘工具,其實在之前已經(jīng)完成了一個簡單的時鐘工具:【Unity3D應(yīng)用案例系列】時鐘、鐘表小組件開發(fā)

那么,今天的這個小工具跟之前的有啥區(qū)別呢?

之前的時鐘,是模擬真實時間時針分針秒針的旋轉(zhuǎn),比如:

可以當(dāng)個時鐘看。

二、時鐘小工具開發(fā)

今天實現(xiàn)一個可以設(shè)置旋轉(zhuǎn)到指定的時間下的表盤,簡單說就是時鐘定時。

2-1、搭建UI

新建一個Image,命名為Image_Clock(名字隨意),作為時針和分針的父節(jié)點,設(shè)置寬高為512:

在Image_Clock節(jié)點下新建Image_Hour和Image_Minute,設(shè)置寬高為512:

在它們的節(jié)點下分別新建一個Image,設(shè)置適合的寬高,位置放到表盤中心:

2-2、實現(xiàn)腳本

新建腳本命名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()
    {
        //設(shè)置分鐘 和完成的秒數(shù)
        SetTime(300, 6, () => { Debug.Log("完成"); });
    }

    /// <summary>
    /// 恢復(fù)角度
    /// </summary>
    private void RecoverAngles()
    {
        HourHands.localEulerAngles = Vector3.zero;
        MinuteHands.localEulerAngles = Vector3.zero;
    }

    /// <summary>
    /// 設(shè)置時間
    /// </summary>
    /// <param name="minute">設(shè)置分鐘數(shù)</param>
    /// <param name="seconds">完成秒數(shù)</param>
    /// <param name="onComplete">委托函數(shù)</param>
    public void SetTime(float minute, float seconds, Action onComplete)
    {
        if (isInit == false)
            Init();

        if (isStopClock == false) return;

        isStopClock = false;
        RecoverAngles();

        // 角度 = 分鐘 / 60秒轉(zhuǎn)動周數(shù) * 360度
        float angles = minute / 60 * 360;
        // 轉(zhuǎn)動的角度 = 角度 / 轉(zhuǎn)動秒數(shù) * 0.1秒轉(zhuǎn)動的角度
        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插件,所以需要導(dǎo)入插件,在文章開始提到的資源包中已經(jīng)有插件了。當(dāng)然,也可以去https://github.com/neuecc/UniRx/releases下載,然后導(dǎo)入到項目中。

將腳本附到Hiearchy視圖的Image_Clock對象上,將時針和分針對象拖進去:

運行后結(jié)果:

以上就是基于Unity3D實現(xiàn)仿真時鐘詳解的詳細內(nèi)容,更多關(guān)于Unity3D時鐘的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于C#實現(xiàn)磁性吸附窗體

    基于C#實現(xiàn)磁性吸附窗體

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)磁性吸附窗體,文中的示例代碼講解詳細,對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • c#中Linq to Sql 增刪除的實例

    c#中Linq to Sql 增刪除的實例

    c#中Linq to Sql 增刪除的實例,需要的朋友可以參考一下
    2013-05-05
  • C#基于SerialPort類實現(xiàn)串口通訊詳解

    C#基于SerialPort類實現(xiàn)串口通訊詳解

    這篇文章主要為大家詳細介紹了C#基于SerialPort類實現(xiàn)串口通訊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Unity?UGUI?按鈕綁定事件的?4?種方式匯總

    Unity?UGUI?按鈕綁定事件的?4?種方式匯總

    UGUI?可視化創(chuàng)建以及關(guān)聯(lián)事件很方便,?動態(tài)創(chuàng)建可以利用創(chuàng)建好的?Prefab?進行實例化,?只是在關(guān)聯(lián)事件上有些復(fù)雜,這篇文章主要介紹了Unity?UGUI?按鈕綁定事件的?4?種方式,需要的朋友可以參考下
    2022-01-01
  • c# 編寫一個輕量級的異步寫日志的實用工具類(LogAsyncWriter)

    c# 編寫一個輕量級的異步寫日志的實用工具類(LogAsyncWriter)

    這篇文章主要介紹了c# 如何編寫一個輕量級的異步寫日志的實用工具類(LogAsyncWriter),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#簡單查詢SQLite數(shù)據(jù)庫是否存在數(shù)據(jù)的方法

    C#簡單查詢SQLite數(shù)據(jù)庫是否存在數(shù)據(jù)的方法

    這篇文章主要介紹了C#簡單查詢SQLite數(shù)據(jù)庫是否存在數(shù)據(jù)的方法,涉及C#調(diào)用SQLite組件及針對SQLite數(shù)據(jù)庫基本的連接、查詢、關(guān)閉等使用技巧,需要的朋友可以參考下
    2016-07-07
  • C#實現(xiàn)簡單的計算器功能(窗體)

    C#實現(xiàn)簡單的計算器功能(窗體)

    這篇文章主要為大家詳細介紹了C#實現(xiàn)簡單的計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C#常用的命名規(guī)則匯總

    C#常用的命名規(guī)則匯總

    這篇文章主要介紹了C#常用的命名規(guī)則,較為詳細的匯總了包括類、變量、方法、屬性等的命名規(guī)則,具有很好的參考借鑒價值,需要的朋友可以參考下
    2014-11-11
  • C# ThreadPool之QueueUserWorkItem使用案例詳解

    C# ThreadPool之QueueUserWorkItem使用案例詳解

    這篇文章主要介紹了C# ThreadPool之QueueUserWorkItem使用案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C#中的XML與JSON數(shù)據(jù)處理的案例詳解

    C#中的XML與JSON數(shù)據(jù)處理的案例詳解

    在現(xiàn)代軟件開發(fā)中,數(shù)據(jù)交換和存儲的需求日益增長,而 XML 和 JSON 成為了兩種最常用的數(shù)據(jù)格式,它們各有特點,在不同的場景下有著各自的優(yōu)勢,本文將從 C# 的角度出發(fā),探討如何處理這兩種數(shù)據(jù)格式,并分享一些常見的問題及解決方法,需要的朋友可以參考下
    2024-09-09

最新評論