강의 수강
지난주에 언리얼 C++ 강의를 완강 후 이번주는 기쁜 마음으로 언리얼 블루프린트 강의를 듣기 시작했습니다.
C++ 강의를 진행하면서 언리얼엔진에 조금 적응해서 그런지 블루프린트 강의는 쉽게 진행하고 있습니다.
3D 게임 개발이 처음이어도 언리얼 블루프린트로 쉽게 배우는 3D 게임 개발 - 2주 차까지 진행 완료
팀원 블루프린트 프로젝트 버그 수정
사전 진행 캠프를 진행하면서 짧게 조별 스크럼을 하는 과정중에 팀원이 블루프린트 강의를 수강하면서 진행하다가 발생하게 된 에러입니다. 두 가지 경우였습니다.
- B레벨에서 직접 실행(Runtime)시는 정상적으로 NavMesh를 잘 받아서 액터들의 생성과 플레이에 지장이 없다.
- A레벨에서 → B레벨을 로드하면 B레벨에서 아래 Get Random Location in Navigable Radius에서 False를 리턴하면서 스폰 액터가 정상적으로 이루어지지 않는 현상이었다.
해당 과정을 진행하면서 어떤 부분이 이상한 건지 해결이 안돼서 어려워하고 있으셔서 저도 흥미를 가지고 프로젝트를 따로 이메일로 받아서 자기 전에 잠깐 확인해 보는 중에 해결하게 되었습니다.
해결 과정
1. A레벨에서 B레벨을 로드하는 과정에서 혹시 B레벨의 레벨 블루프린트가 작동하지 않는 것인가 싶어서 로그를 남겨보았지만 정확히 아래 노드 직전까지는 문제없이 진행되고 저 부분에서 False가 발생한 에러였습니다.
→ 여기서는 구글링에서 말하는 Rebuild Navigation의 문제가 아닌 것을 알게 되었습니다.
2. 프로젝트 설정 → 내비게이션 메시 → 런타임 생성 → 이 부분을 Static에서 Dynamic으로 변경해 보라는 글도 보아서 변경했지만 달라지는 것은 없었습니다. 물론 그 위에 있는 로드 시 강제 빌드도 달라지는것은 없었습니다.
3. 그러면 여기서 가지게 되는 궁금한 부분은 신을 로드하는 과정에 기존에 제가 다루었던 유니티 엔진에서는 기존의 씬을 정리하고 로드하는 방식과 기존의 씬 위에 씬을 로딩하는 방식이 있었는데 혹시 언리얼 엔진도 비슷하지 않을까 생각이 들어서 씬을 로드하는 게임모드 블루프린트를 확인하게 되었습니다.
4. 게임모드 블루프린트를 확인하니 AddMainGame을 UI를 통해서 호출하고 Load Level Instance(by Object Reference) 노드를 통해서 B레벨을 로드하려는 것을 확인하였습니다. 처음 디버깅을 통해서는 로그도 잘 찍히고 블루프린트 디버깅에도 문제가 없어서 별 생각이 없었는데 신을 로드하는 방식이 Open Level도 있었던 기억이 나서 노드를 바꿔서 실행해 보았습니다.
5. AddMainGame에서 Open Level(by Object Reference)를 사용하니 기존에 있었던 오류는 사라지고 플레이가 정상화되었습니다.
성공적으로 문제를 해결한 후에 OpenLevel과 LoadLevel의 차이점이 궁금해졌습니다.
https://sonsazang.tistory.com/58