인간 인류에 있어서 빼놓을 수 없는 것들 중 한 가지는 시간입니다. 시간은 과거에도 흐르고 있고 지금도 흐르고 있고 미래에도 흐르고 있을 것입니다. 시간이 존재함에 따라 그것을 볼 수 있는 시계라는 우리에게 없어서는 안되는 또 다른 산물을 낳았습니다. 시계는 다양한 형태로 존재합니다. 아날로그와 디지털의 형태로 존재하는데, 세상이 점점 디지털화가 됨에 따라 디지털시계가 점점 보급화가 되었습니다. 디지털시계는 시침, 분침, 초침이 돌아가는 구조가 아닌 숫자나 문자로 시간과 날짜를 작은 불빛을 통해 보여줍니다. 컴퓨터, 모바일, 등 전자기기는 기본적으로 디지털로 시간을 표시하기 때문에 이것만 가져올 수 있다면 디지털시계를 구현하는 것은 매우 쉽습니다. 유니티에서는 System에 접근해서 DateTime이라는 시간 관련 잘 만들어진 Struct를 사용하면, 현재 시간을 가져올 수 있고 다양하게 활용할 수 있습니다. 디지털시계는 특정 폼을 가지고 있기 때문에 우리가 DateTime.Now를 통해 가져온 시간을 이용하여, 현재 시간을 우리가 원하는 Format에 맞춰서 표시할 수 있습니다.
C# (UNITY 3D)
현재 시간과 날짜를 표시하는 예시입니다. 날짜는 연도(4자리), 월(2자리), 일(2자리), 영문 요일(3자리)로 표시하고 시간은 24시간 기준으로 표시했습니다. Get 버튼을 누르면 현재 날짜와 시간을 가져옵니다.
using System;
using UnityEngine.UI;
시간 스트럭트 DateTime을 사용하기 위해 System을 사용하고, Text, Button을 사용하기 위해 UnityEngine.UI 사용
각 컴포넌트에 맞는 오브젝트 할당
public Text text_date;
public Text text_time;
public Text text_get;
public Button button_get;
private void Start()
{
Init_UI();
Init_Time();
}
private void Init_Time()
{
if (IsInvoking("Update_Time"))
CancelInvoke("Update_Time");
InvokeRepeating("Update_Time", 0, 0.2f);
}
private void Init_UI()
{
button_get.onClick.RemoveAllListeners();
button_get.onClick.AddListener(Get_Time);
}
private void Update_Time()
{
string date = DateTime.Now.ToString("yyyy.MM.dd ") + DateTime.Now.DayOfWeek.ToString().ToUpper().Substring(0, 3);
//or date = DateTime.Now.ToString("yyyy. MM. dd. ddd");
string time = DateTime.Now.ToString("HH:mm:ss");
text_date.text = date;
text_time.text = time;
Debug.Log( string.Format("{0}\n{1}", date, time));
}
private void Get_Time()
{
text_get.text = text_date.text + "\n" + text_time.text;
Debug.Log(text_get.text);
}
변수(variable)
text_date(Text) : 날짜를 특정 Format으로 표시
text_time(Text) : 시간을 특정 Format으로 표시
text_get(Text) : 현재 날짜/시간 표시
button_get(Button) : text_get에 현재 날짜 및 시간 넣는 버튼
함수(function)
Init_Time : 시간 관련 초기화(진행 중인 InvokeRepeating이 있으면 실행 취소하고 다시 시작)
Init_UI : 버튼 기능 초기화
Update_Time : 시간과 날짜를 UI로 표기 (반복문에 삽입)
Get_Time : 현재 시간/날짜 반환
Digital Clock / Time Format / ToUpper / SubString / DayOfWeek / yyyy / MM / dd / HH / mm / ss / string Format
'Unity3D > C#' 카테고리의 다른 글
유니티 범위 안에 있는 랜덤 값 뽑기 (INT, FLOAT) (0) | 2020.10.28 |
---|---|
유니티 아날로그 시계 구현 (Quaternion.Euler, DateTime.Now) (0) | 2020.10.26 |
유니티 2D 이미지 무한 평면 회전 (Rotate, eulerAngles) (0) | 2020.10.25 |
유니티 아이템 / 스킬 쿨타임 UI 표시 in Script (0) | 2020.10.24 |
유니티 시간 기반 가짜 로딩바 구현 in Script (Time.time / fillAmount) (0) | 2020.10.23 |