最终实现:
代码:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Clock : MonoBehaviour
{
public Transform HoursTransform, MinutesTransform, SecondsTransform;
private const float _degreesPerHour = 30f;
private const float _degreesPerMinute = 6f;
private const float _degreesPerSecond = 6f;
public bool Continuous;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
if (Continuous)
{
UpdateContinuous();
}
else
{
UpdateDiscrete();
}
}
void UpdateContinuous()
{
TimeSpan time = DateTime.Now.TimeOfDay;
HoursTransform.localRotation = Quaternion.Euler(0f, (float)time.TotalHours * _degreesPerHour, 0f);
MinutesTransform.localRotation = Quaternion.Euler(0, (float)time.TotalMinutes * _degreesPerMinute, 0);
SecondsTransform.localRotation = Quaternion.Euler(0, (float)time.TotalSeconds * _degreesPerSecond, 0);
}
void UpdateDiscrete()
{
DateTime time = DateTime.Now;
HoursTransform.localRotation = Quaternion.Euler(0f, time.Hour * _degreesPerHour, 0f);
MinutesTransform.localRotation = Quaternion.Euler(0, time.Minute * _degreesPerMinute, 0);
SecondsTransform.localRotation = Quaternion.Euler(0, time.Second * _degreesPerSecond, 0);
}
}