Unity 5. Часы

Unity 5. Часы

Как создать часы в Unity 5.

Иногда, при создании проекта, есть необходимость в создании часов. Например, в игре есть потребность в часах, от значения которых будут зависеть некоторые другие параметры, которые будут влиять на игровую сцену или на самого персонажа.

В этой статье мы попробуем реализовать часы двух видов:

  1.  часы, которые отображают реальное время
  2.  часы, которые отображают вымышленное время.

Давайте начнем , запустим Unity и для начала настроим сцену.  Добавим на сцену компонент Canvas и в нем Panel с тремя элементами Text для отображения часов: часы, минуты, секунды. Должно, получится примерно как на скриншоте…

canvas

Далее создадим скрипт ClockReality и напишем такой код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using UnityEngine.UI;

public class ClockReality : MonoBehaviour {

float secondsNew = 60f, minutesNew = 60f, hoursNew = 12f;
public Text second;
public Text minutes;
public Text hours;

void Update () {

DateTime time = DateTime.Now;
second.text = ""+(time.Second * (60f / secondsNew));
minutes.text = "" + (time.Minute * (60f / minutesNew)) + "  :";
hours.text = "" + (time.Hour * (12f / hoursNew)) + "  :";
  }
}

Здесь все предельно просто, поместим это скрипт на компонент Panel и укажем наши Text (Часы, минуты, секунды)

RealityClock

Это был первый метод создания часов реального времени. Возможно, вы скажете, а почему не сделать один компонент Text и не запихать все туда? Разделение на часы, секунды, и минуты даст возможность обращения к ним из других скриптов, например, если вы захотите сделать какой-нибудь параметр, который будет зависеть от текущего времени.

Второй метод создания «врущих» часов не сложнее. Продублируем нашу панель с компонентами Text и разместим чуть ниже.

newclock

Создадим новый скрипт NewClock и напишем такой код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using UnityEngine.UI;

public class NewClock : MonoBehaviour {

public Text second;
public Text minutes;
public Text hours;
public float param;
public float second1;
public float minuta1;
public float hours1;

void Update () {
  param -= Time.deltaTime;
  if (param <= 0)
   {
    param = 1;
    second1 = second1 + 1;
    }

  if (second1 >= 60)
   {
    minuta1 = minuta1 + 1;
    second1 = 0;
   }

  if (minuta1 >= 60)
   {
    hours1 = hours1 + 1;
    minuta1 = 0;
   }

  if (hours1 > 23) {
  hours1 = 0;
  }

 second.text = "" + second1;
 minutes.text = "" + minuta1 + "  :";
 hours.text = "" + hours1 + "  :";
 }
}

Здесь тоже ничего сложного, значение param уменьшается с каждой секундой и когда оно равно нулю, прибавляем одну секунду, а за ней и минуты и часы. Если необходимо замедлить или ускорить часы, просто изменим значение param=1 на другое (чем меньше, тем часы будут работать быстрее). Помещаем этот скрипт на вторую панель и так же, указываем три Text для часов.

Newclocksprew

После небольшой обработки сцены можно получить вот такие разные часы…

clok

 

На этом все, ждем ваших комментариев, предложений или изменений по данной статье, удачных проектов!

На главную


Оставить Комментарий