게임이 종료될 때 레벨이 4 / 웨이브가 4 / 타임이 –1이 되는 현상 발생
CurrentLevel을 0, MaxLevel 레벨을 3으로 설정해두었으니 0,1,2,3 이라 당연한 현상
하지만 게임이 끝날 때는 레벨 3 / 웨이브 3에서 끝나야 정상이기 때문에 코드의 순서를 변경
먼저 CurrentLevel >= MaxLevel –1 인지 확인, 만약 맞으면 종료하고 아니라면 레벨+1레벨 0 실행 -> CurrentLevel 0 >= 2 -> CurrentLevel + 1 = 1
레벨 1 실행 -> CurrentLevel 1 >= 2 -> CurrentLevel + 1 = 2
레벨 2 실행 -> CurrentLevel 2 >=2 -> 종료의 순을 거쳐 웨이브던 레벨이던 3회만 실행됨
끝 레벨을 2로 설정하면 되는데 굳이 이렇게 하는 이유
1. 표기상 끝 레벨이 3이어야 3레벨까지 있구나라는 것을 확인할 수 있음
2. 나중에 레벨을 늘릴 때, MaxLevel값만 바꿔주면 나머지는 건드릴 필요가 없기 때문
게임 스테이트에 저장해놓은 레벨인덱스가 넘어갈 때마다 StartLevel()이 되는 것이 아니라 BeginPlay()이 시에 StartLevel()이 시작되는 구조임. 즉, 레벨인덱스가 넘어갈 때 웨이브가 4로 바뀌고 3개의 웨이브가 제대로 진행되지 않는 상황 발생.
해결방안1.
레벨인덱스가 넘어갈때마다 BeginPlay()호출 -> StartLevel()에서 CurrentWave=0으로 초기화해결방안2. (이 방법으로 해결)
EndLevel()에서 CurrentWave=0으로 초기화
이렇게 하면 레벨인덱스가 넘어가면서 CurrentLevel+1이되고 CurrentWave=0이 되기 때문에
다시 웨이브가 3개가 진행됨
EndWave()에서 타이머를 초기화 시키는 동작이 있는데, 이때 언리얼엔진에서 –1로 표기하게끔 내장되어있음. 그래서 HUD에서 이를 가져오면 –1로 인식하는 것. 그래서 HUD의 타이머 설정에 if문을 사용해서 0보다 작을 시 출력을 0으로 하도록 고정해놓음