2013-06-13 2 views
0

방금 ​​내 관심사를 발견 한 무언가를 발견했습니다. 보세요, 저는 보통 "타이머"를 int Time = Duration;으로하고, 내 업데이트에서는 Time -= gameTime.ElapsedGameTime.MilliSeconds;이 될 것입니다. 그러나 성능이 향상 될 것이라고 생각하여 그 대신 gameTime.ElapsedGameTime.Seconds을 사용해 보았습니다. 하지만 지금은 전혀 업데이트되지 않습니다!gameTime.ElapsedGameTime.Seconds가 업데이트되지 않습니다.

내 코드는 기본적으로 : spriteBatch.Draw(Time, Position, Color.White)

어떻게 든, 문자열은 말한다 : 나에게 시간을 알려주는 문자열을 그리기 Time -= gameTime.ElapsedGameTime.Seconds;

:

선언 변수 : int Time = 120;SpriteFont spriteFont1;

업데이트 밀리 세컨드 (MilliSeconds)로 할 때가 줄어들고 있습니다. 왜?

+0

아니요 ElapsedGameTime은 모든 업데이트 사이에 경과 된 시간이 아닙니까? 나는 틀릴 수도 있지만, 각 업데이트 사이의 시간과 각 업데이트가 1 초 미만이면 매번 다시 설정되기 때문에 항상 0이됩니다. –

+0

'Seconds' 대신'TotalSeconds'처럼'Total *'을 사용하십시오 – Diamondo25

+0

@ Diamondo25 TotalSeconds는 그의 카운트 다운 타이머에서 작동하지 않습니다. -1 초, -2, -3 등이 될 것입니다. 그리고 OP에서는 Seconds가 밀리 초보다 "성능 친화적 인"것이 아닙니다. 수백만 건의 호출이있을 경우 몇 초 내에 (내부적으로 어떻게 작동하는지 정확하게 알지 못한다) 저장할 수는 있지만 앱의 병목 현상은 없습니다. –

답변

1

gameTime.ElapsedGameTime.Seconds은 마지막 업데이트 이후의 시간입니다. 업데이트가 매우 빠르기 때문에 업데이트 간격은 초보다 작습니다. 초는 int으로 반환되므로 항상 0이됩니다.

+0

감사합니다. 이미 의견에 언급되어 있지만 이것이 유일한 물리적 대답입니다. 또한, 프레임 사이의 시간이 아닌 실제 시간이되기를 원하면 어떻게 처리 할 것인가? – Neophyte

+0

'TotalGameTime'을 사용하거나 밀리 초를 변수에 추가하십시오. 변수에 시간을 저장하면 타이머를 '재설정'할 수 있습니다. – computer10171

관련 문제