게임의 루프를 제어하는 코드를 이해하는 데 막대한 어려움을 겪고 있습니다.이 while 루프의 목적을 이해할 수 없습니다. "while (unprocessedSeconds> secondsForEachTick)"왜 FPS 카운터 그 내부에 원하는 (tickCounter의 60 % == 0) 만약 있다면 코드 다음과게임 루프 컨트롤
public void run()
{
int frames = 0;
double unprocessedSeconds = 0;
long previousTime = System.nanoTime();
double secondsForEachTick = 1/60.0;
int tickCount = 0; //RENDER COUNTER
boolean ticked = false;
while (running)
{
long currentTime = System.nanoTime();
long passedTime = currentTime - previousTime;
previousTime = currentTime;
unprocessedSeconds = unprocessedSeconds + passedTime/1000000000.0;
int count = 0;
while(unprocessedSeconds > secondsForEachTick)
{
tick();
count++;
unprocessedSeconds -= secondsForEachTick;
ticked = true;
tickCount++;
if(tickCount % 60 == 0){
System.out.println(frames + " fps");
previousTime += 1000;
frames = 0;
}
}
System.out.println("Iterações do loop: "+count);
if(ticked)
{
render();
frames++;
ticked = false;
}
}
}
tickCount % 60' 코드에 들어 가지 않고 이름과 60으로 인해 분/초 계산과 같은 냄새가납니다. (1 분 = 60 초) - 디버그하면 더 잘 이해할 수 있습니다. – Maroun