Monster Killer
안녕하세요. 오늘은 가벼운 버그에 대해서 다시 이야기하러 왔습니다. 오늘은 정말 가벼운 버그를 조금만 알아보고 넘어가도록 하겠습니다.
버그 수정 - 페이드아웃
이번에는 페이드 아웃에 대한 버그 입니다. 페이드 아웃은 게임을 개발할 때 초기부터 계속 사용하던 기능인데, 어떤 버그가 났느냐... 페이드 아웃 자체의 버그라기보다는 다른 기능들이 계속 개발되면서 뭔가 호환적인 문제가 발생했습니다.
저는 페이드 아웃과 페이드 인을 캔버스 UI의 알파값을 사용하여 어두워지고, 밝아지도록 하여 컨트롤 했습니다. 씬 전환을 할 때에 페이드 아웃이 실행되고, 다음 넘어간 씬에서는 페이드 인이 실행되어 어두워졌다가 밝아지는 기능을 만들게 된 것입니다. 그런데 스테이지를 클리어 하면 클리어 페이지를 띄우고, 클리어 페이지에서 버튼을 눌러 다시 씬 전환을 할때에 문제가 발생했습니다.
클리어 페이지가 뜨면 씬의 TimeScale을 사용하여 시간을 멈추게 되는데, 이는 일시정지와 같은 기능입니다. 그런데 이제 버튼을 클릭하면 페이드 아웃이 진행되면서 씬전환이 이루어져야 합니다. 이 때, 페이드 아웃을 실행할 때 deltaTime을 사용하여 알파값을 조절하는 데, 두 소스코드가 꼬이면서 문제가 조금 발생했습니다.
꼬인 소스를 푸는 과정에서 델타타임이 아닌 unscaledDeltaTime을 사용하는 방식을 적용했었는데, 이렇게 하면 다른 TimeScale과 deltaTime을 컨트롤하는 데 꼬이는 현상이 발생했습니다.
마지막에는 결국 문제를 해결했는데, 문제가 되었던 것은 페이드 인/아웃에 사용되는 time을 지역 변수로 만들지 않고 전역변수로 해놓은 상태에서 페이드 인/아웃과 동시에 씬 전환을 실행하면서 씬 전환이 완벽하게 끝나는 타이밍과 페이드 인/아웃이 완벽하게 끝나서 알파 값/타입 값이 0 혹은 1이 온전하게 이뤄지지 않아서 발생한 문제였습니다.
씬 전환 시 발생하는 페이드 아웃과 씬 전환이 완료되고 난 후에 실행되는 페이드 인은 이렇게 작성되었습니다.
<NEXT>
이제 버그에 대한 이야기가 끝난 것 같습니다. 길었던 Monster Killer 제작 과정을 봐주신 분들에게 감사하고, 깔끔하게 70번째에서 끝내는 것이 좋을 것 같습니다. 다시 새로운 정보를 계속 가져오도록 노력해보겠습니다. 감사합니다.
'게임 프로그래밍 > 게임개발 중급' 카테고리의 다른 글
게임개발 중급(107) - Monster Killer(69) (4) | 2024.11.16 |
---|---|
게임개발 중급(106) - Monster Killer(68) (2) | 2024.11.12 |
게임개발 중급(105) - Monster Killer(67) (0) | 2024.11.11 |
게임개발 중급(104) - Monster Killer(66) (4) | 2024.11.10 |
게임개발 중급(103) - Monster Killer(65) (2) | 2024.11.09 |