docs.unity3d.com/ScriptReference/Time-realtimeSinceStartup.html
2020.3버전 Time.realtimeSinceStartup API입니다.
Time.realtimeSinceStartup은 게임이 시작된 이후의 실시간 시간(초)입니다.
이 값은 어플리케이션이 시작되고 난 후 의 값을 리턴합니다. 이 값은 timeScale에 영향을 받지 않습니다.
그리고 이 값은 사용자가 pause를 하더라도 백그라운드에서 계속 증가를 합니다. 이러한 장점이 있어서 실시간 서버를 사용할 수 없는 환경에서 시간을 시뮬레이션하는 용도로도 이용 가능합니다.
Time.realtimeSinceStartup은 시스템 타이머에 의해 보고되는 시간을 return합니다.
그리고 하드웨어와 플랫폼에 의존적이며 시간을 이용해서 어떤 값을 나누는 경우에 사용을 주의해야합니다.
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
void Example() {
print(Time.realtimeSinceStartup);
}
}
위의 예제를 통해 알아보자면 어플리케이션을 처음 작동하고 이후에 껐다가 다시 실행한 시간이 정확히 1시간 지났다고 가정을 해보겠습니다. 그럴때 Example()을 실행시킨다면 print에 의해 3600이 print될 것입니다.
다른 예제 또한 살펴보겠습니다.
using UnityEngine;
using System.Collections;
// An FPS counter.
// It calculates frames/second over each updateInterval,
// so the display does not keep changing wildly.
public class ExampleClass : MonoBehaviour {
public float updateInterval = 0.5F;
private double lastInterval;
private int frames = 0;
private float fps;
void Start() {
lastInterval = Time.realtimeSinceStartup;
frames = 0;
}
void Update() {
++frames;
float timeNow = Time.realtimeSinceStartup;
if (timeNow > lastInterval + updateInterval) {
fps = (float) (frames / (timeNow - lastInterval));
frames = 0;
lastInterval = timeNow;
}
}
}
Start함수에 의해 lastInterval에 처음 실행시킨 후 지금까지 지난 시간이 값에 들어가게 됩니다.
frame의 값은 0으로 초기화 됩니다.
Update가 매 프레임마다 호출이 된다는 점은 알고 계실 것입니다. 프레임이 몇번 불려졌는지 확인을 하기 위해 ++frame을 해줍니다.
그리고 timeNow에 처음 실행시킨 후 지금까지 지난 시간의 값이 들어가게 초기화를 해줍니다.
if문에 의해 어플리케이션을 실행시키고 1프레임이 지났을 때 0.5초가 지나있으면
if안에 있는 함수들을 실행을 합니다. if문의 존재 이유는 fps를 구하는 이유입니다.
(SetAcative를 통해서 Start시켜도 될것 같음 함 해봐야겠음 한번 실행을 해봐야겠음!!)
'Unity 게임 개발' 카테고리의 다른 글
C# Unity [SerializeField]와 [HideInInspector] (1) | 2021.04.19 |
---|---|
C# 추상메소드와 인터페이스 설명 (0) | 2021.04.14 |
Unity Mathf.Lerp 공부 (0) | 2021.03.29 |
Unity time.time과 time.deltaTime의 설명 및 차이점 (0) | 2021.03.25 |
Unity Object.Instantiate() 설명 (0) | 2021.03.21 |