이전에 낮과 밤을 구현한적 있는데 그곳에서 필요한 코드들을

공용시간으로 돌리기 위해 GlobalTimeManager 스크립트를 하나 만들었다.

 

Start부분 부터 살펴 보면 _timeRate = 1.0f / FullDayLength; 라고 적혀있다.

FullDayLength에 입력한 값을 나중에 퍼센트로 바꿔서 사용하기 위해 1f로 나눠주는 모습이다.

 

다음은 Update부분에 DayTime = (DayTime + _timeRate * Time.deltaTime) % 1.0f;

위에서 만든 _timeRateTime.deltaTime에 곱하고 현재시간을 더해준다.

그 값의 1f로 나눠서 나오는 나머지 값으로만 DayTime를 측정하기 때문에 값은

0~0.999.. 까지 밖에 나올 수 가 없다.

 

여기까지는 전에 만들어 둔 내용이고 오늘 팀원과 상의 해본 결과

UI에 표시되는 시간을 24시에 맞게 표현하는게 좋을 거 같다고 해서

그에 맞게 코드를 추가 했다.

 

전체시간, 시간, 분까지 변수로 만들어 두고

 

Update에서 처리 해줬다.

먼저 0 ~ 0.9999까지 돌아가는 시간을 * 24 해서 전체 시간에 담아주고

그 시간을 Mathf.Floor() 메서드에 담아서 시간으로 만들었다.

여기서 Mathf.Floor()는 메서드안에 담겨있는 숫자를 내림 해주는 함수이다.

전체시간이 12.1124124 이런식으로 찍히고 13에 갈때까지 현재시간이 12로 되는 방식이다.

다음으로 Minutes에는 전체시간에서 현재시간을 빼고 * 60을 해주어서 남은시간중 60분을

표현했다.

 

 

반응형