인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)

Hero 교체

13주차 Hero교체 영상 24:20부분에서 퀘스트 완료해도 영웅존재안함 발생에 대해

작성

·

237

·

수정됨

0

영상에서 처럼 퀘스트 구현 최종 테스트에서 퀘스트 NPC를 클릭후, 완료를 통해 새로운 영웅을 얻는 과정에서 HeroManager내의 PickHero 함수에서 "영웅존재안함" 로그를 뱉는데

테스트 해보니 세이브파일이 존재할 땐, GameManager내의 LoadGame을 통해 HeroManager의 AllHeroInfos에 정보가 담겨 정상 작동하는데


세이브파일이 존재 하지 않을 땐, GameManager내의 InitGame을 통해 게임이 시작되는데, 이때는 HeroManager내의 AllHeroInfos에 정보가 하나도 담기지 않습니다.

결국 강의 영상과 같이 퀘스트를 완료해도 보상을 통한 영웅 추가가 이루어지지 않고 "영웅존재안함"이 재현됩니다.

GameManager의 LoadGame함수처럼 InitGame 함수 마지막 부분에 Managers.HeroManager.AddUnknownHeroes(); 임시 방편으로 추가하여 처리하긴 했는데 올바른 방법인지 잘 모르겠습니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
님의 질문에 대해 답변드립니다.

현재 상황에서 Managers.HeroManager.AddUnknownHeroes();InitGame 함수 마지막 부분에 추가하여 해결하신 방법은 처음 게임을 시작할 때 영웅 정보를 초기화하는 임시적인 해결 방법으로 보입니다. 세이브 파일이 없을 때 게임을 초기화하는 과정에서 필요한 데이터를 빠트리지 않고 포함시키기 위한 의도로 보여집니다.

영웅 정보가 HeroManagerAllHeroInfos에 제대로 담기지 않는 문제는 퀘스트 완료시 보상을 통해 새로운 영웅을 추가하는 과정에서 필요한 데이터가 초기에 제대로 설정되지 않았기 때문으로 추측됩니다. 따라서, 처음 게임을 시작하는 시점에서 모든 필요 데이터를 포함시켜 초기화하는 작업이 중요합니다.

해당 방법이 올바른 방법인지의 여부는 게임의 전체적인 설계와 구조, 그리고 의도에 따라 달라질 수 있습니다. 일반적으로 게임 초기화 과정에서 게임에 필요한 핵심 데이터를 세팅하는 것은 중요한데, 이 경우 영웅 정보 역시 게임 시작 시점에 초기화되어야 하는 중요한 데이터 중 하나로 볼 수 있습니다.

만약 이 과정이 공통적인 처리 방법이라면 InitGame 함수 내에 영웅 정보 추가 로직을 포함시키는 것이 적절할 수 있습니다. 하지만, 게임 설계에 따라 더 나은 방법이 있을 수 있으므로, 전체적인 게임 아키텍처와 데이터 흐름을 검토해보시는 것도 좋습니다.

가장 중요한 것은 게임을 시작할 때 필요한 모든 데이터가 정확하게 초기화되고, 게임의 모든 시나리오에서 일관된 데이터 상태를 유지할 수 있는지 확인하는 것입니다. 가능하다면 해당 로직을 더 깔끔하고 일반적인 처리 방법으로 정리할 수 있는지 고민해 보시는 것이 좋겠습니다.

원하는 답변을 찾지 못하셨나요?
그럼 우측 하단의 ‘문의하기’ 에서 직접 문의해주세요.
최대한 빠르게 답변드리도록 하겠습니다!

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기