728x90
반응형
1. 소스
카운트 다운 되는 타이머를 만든 소스입니다.
네임스페이스 |
using System; |
멤버 변수로 m_TotalSeconds를 사용하며, 혹시 Component에 추가 후 수정을 하고 싶으면, 꼭 인스펙트 창에서 값을 수정하시기 바랍니다.
멤버 변수 |
public float m_TotalSeconds = 5 * 60; // 카운트 다운 전체 초(5분 X 60초), 인스펙트 창에서 수정해야 함. |
메서드 |
private string CountdownTimer(bool IsUpdate = true) { if(IsUpdate) m_TotalSeconds -= Time.deltaTime; TimeSpan timespan = TimeSpan.FromSeconds(m_TotalSeconds); string timer = string.Format("{0:00}:{1:00}:{2:00}.{3:000}", timespan.Hours, timespan.Minutes, timespan.Seconds, timespan.Milliseconds); return timer; } |
2. 데모
아래 데모 소스를 만든 후, 인스펙트 창에서 Text에 카운트가 찍힐 Text UI를 할당 한 후 사용하시기 바랍니다.
이 소스는 m_IsPlaying가 처음에 false로 잡혀 있기 때문에, Space 키를 눌려야 시작하며, 다시 Space 키를 누르면 타이머가 멈추게 되어 있습니다.
만약 카운트 다운이 0이 되었을 때 어떤 이벤트를 원하면, 아래 빨간 색으로 되어 있는 [이벤트]부분에 넣으면 됩니다.
스페이스키를 눌려야 시작합니다.
그리고 또 스페이키를 누려면 멈추기, 다시 누려면 시작합니다.
using UnityEngine;
using UnityEngine.UI;
using System;
public class Countdown : MonoBehaviour
{
public string m_Timer = @"00:00:00.000";
public KeyCode m_KcdPlay = KeyCode.Space;
private bool m_IsPlaying;
public float m_TotalSeconds = 5 * 60; // 카운트 다운 전체 초(5분 X 60초), 인스펙트 창에서 수정해야 함.
public Text m_Text;
private void Start()
{
m_Timer = CountdownTimer(false); // Text에 초기값을 넣어 주기 위해
}
private void Update()
{
if (Input.GetKeyDown(m_KcdPlay))
m_IsPlaying = !m_IsPlaying;
if (m_IsPlaying)
{
m_Timer = CountdownTimer();
}
// m_TotalSeconds이 줄어들때, 완전히 0에 맞출수 없기 때문에
if (m_TotalSeconds <= 0)
{
SetZero();
//... 여기에 카운트 다운이 종료 될때 [이벤트]를 넣으면 됩니다.
}
if (m_Text)
m_Text.text = m_Timer;
}
private string CountdownTimer(bool IsUpdate = true)
{
if(IsUpdate)
m_TotalSeconds -= Time.deltaTime;
TimeSpan timespan = TimeSpan.FromSeconds(m_TotalSeconds);
string timer = string.Format("{0:00}:{1:00}:{2:00}.{3:000}",
timespan.Hours, timespan.Minutes, timespan.Seconds, timespan.Milliseconds);
return timer;
}
private void SetZero()
{
m_Timer = @"00:00:00.000";
m_TotalSeconds = 0;
m_IsPlaying = false;
}
}
3. 결과
728x90
반응형
'프로그램 > 유니티 스크립트 소스' 카테고리의 다른 글
[유니티 스크립트 소스] 유니티 에디터에서 클라이더 그리기 (0) | 2020.02.19 |
---|---|
[유니티 스크립트 소스] 리지드바디 없이 위치값으로 속도 얻기 (0) | 2020.02.18 |
[유니티 스크립트 소스] 타이머 - 스톱 워치 (0) | 2020.02.17 |
[유니티 스크립트 소스] Flying Object 키보드 단순 제어 (0) | 2020.02.16 |
[유니티 스크립트 소스] 프레임 레이트(Frame rate)구하기 (0) | 2020.02.16 |