2017-10-15 9 views
3

C# 및 Unity로 리듬 게임을 만들고 있는데 일부 플레이어와 하드웨어 사이에 직접적인 상관 관계를 찾을 수 없었지만 일부는 시간이 지남에 따라 점차적으로 음악에 맞지 않는 게임 플레이에 문제가 있습니다. 눈에 띄기까지는 보통 2 ~ 3 분이 걸리지 만 게임의 느낌이 완전히 사라집니다.경과 시간 추적 C#/Unity

Double을 사용하고 Time.deltaTime (프레임 사이의 시간)을 추가하여 경과 시간을 추적하고 있습니다. 그 작업과 관련된 정밀도 오차가 매우 작다고 가정합니다. 점진적인 desyncs가 발생합니다.

이렇게하는 것이 더 정확한 방법이 있습니까? 게임 플레이가 시작된 시간을 얻은 다음 각 프레임에서 현재 시간의 시간을 빼면 시간이 더 정확해질 것이라고 생각합니다. 나는 게임 시간을 오디오 시간과 동기화하려고 시도했다. (Bass.NET은 몇 초만에 노래 위치를 얻을 수있는 방법을 제공한다.) 그러나 저와 꽤 많은 다른 사람들을 위해 일하는 동안, 일반적으로 8-10 세의 PC에서도 잘 작동합니다).

+0

대신 DateTime을 사용해 볼 수 있습니다. – Everts

+0

Unity에서 'Time.deltaTime'은 타이밍 작업을 수행하는 가장 정확한 방법입니다. 코드에서 코드를 사용하는 방법을 설명하고 코드를 게시하면 다른 사람들이 더 좋은 방법을 찾을 수 있습니다. – Programmer

+0

나는 그것을 어떻게 사용했는지 설명했다. 나는 모든 프레임에 Time.deltaTime을 더하고있다. –

답변

1

필요에 따라 Time.timeSinceLevelLoad, Time.realtimeSinceStartup을 사용할 수 있지만 (대신 Time.time을 사용하는 것이 좋음) 또는 대부분 Time.time 일 수 있습니다. Time.timeScale을 사용하여 게임을 일시 중지하는 경우 Time.unscaledTime을 사용할 수 있습니다.

Time.realtimeSinceStartup과 Time.time의 차이점은 Time.timeScale으로 게임을 일시 중지하더라도 Time.realtimeSinceStartup이 계속 계산된다는 것입니다. 사용자가 오디오 재생을 멈추거나 중지하지 않을 수도있는 게임을 일시 정지한다고 가정하면 어떤 자산을 사용할 것인지 전략을 수립하는 데 도움이됩니다. 게임 논리에 따라 가장 신뢰할 수있는 결과를 얻으려면 Application.runInBackgroundtrue으로 설정하십시오.