유니티에서 타이머 Timer 만들기
유니티에서 타이머 만들기

![]()
이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용할 수 있습니다.
Timer 클래스
일정 시간마다 특정 처리를 실행하는 코드는 자주 사용됩니다. 이럴 때 Timer라는 클래스를 만들어 사용하면 편리하게 사용할 수 있습니다.
그 전에 먼저 자주 사용되는 타이머 코드를 살펴보겠습니다. elapsedTime 변수는 시간을 측정하기 위한 float 타입의 멤버 변수입니다.
// 타이머 업데이트.
_elapsedTime += Time.deltaTime;
// 타임아웃 체크.
if (_elapsedTime >= 60f)
{
// 일정 시간마다 처리.
// ... 생략.
// 타이머 초기화.
_elapsedTime = 0f;
}
위에서 처리한 기능을 추가해서, Timer 클래스를 작성해 보겠습니다.
public class Timer
{
private float _elapsedTime = 0f;
private float _limitTime = 0f;
public Timer(float limitTime)
{
_elapsedTime = 0f; _limitTime = limitTime;
}
public void Update(float deltaTime)
{
_elapsedTime = Mathf.Min(_elapsedTime + deltaTime, _limitTime);
}
public bool IsTimeout
{
get
{
return _elapsedTime >= _limitTime;
}
}
public void Reset()
{
_elapsedTime = 0f;
}
}
이렇게 만든 Timer 클래스를 사용하면 코드가 다음과 같이 바뀝니다.
timer.Update(Time.deltaTime);
if (timer.IsTimeout)
{
// 일정 시간마다 처리.
// ... 생략.
timer.Reset();
}
코드의 양(줄 수)은 변화가 없습니다. 하지만 주석으로 따로 설명해야 했던 것이 클래스로 표현되었습니다. 코드를 읽으면 바로 무슨뜻인지 알 수 있습니다. 매우 자기 설명적인 코드라고 할 수 있습니다.
float 타입은 범용적인 데이터 타입입니다. 따라서 elapsedTime 변수는 시간 제어와 관련된 용도 이외에도 사용할 수 있습니다. 하지만 Timer 클래스 내부의 elapsedTime 변수는 시간 제어 용도로만 사용합니다. 코드의 의도가 더 명확해지는 것입니다.
이렇게 변수를 클래스화 해서 의도를 명확히 전달하는 것이 좋습니다.
내용 끝까지 읽어주셔서 감사합니다.
배너 클릭은 저에게 많은 힘이 됩니다.
감사합니다 🙂