● 오늘 할 일
교환 시스템미니 게임 이미지와 NPC 애니메이션간단하게라도 BGM SE 구현모자 대사 표시모자 데이터 추가필요 없는 데이터 삭제
● 오늘의 트러블 슈팅
#1 교환 함수의 중복 호출 문제
교환 기능을 가진 상호작용 가능한 물체를 구현하고 싶었다.
교환 가능여부에 따라 마지막멘트를 변경하는 로직이 담긴 함수를 작성하였고
실행을 했지만 모든 물체의 마지막 대사가 "다이아가 부족하군요..."로 뜨고 있었다.
▼문제 영상
코드를 다시 읽어보니 상호작용이 가능한 모든 오브젝트에는 PropController 스크립트가 있는데
PropController 안 Start()에서 아래 코드를 선언해주고 있었다.
m_SceneController.DialogueController.OnLastDialogueEvent += Exchange;
하지만 오브젝트 타입으로 판단하여 교환기능을 가진 오브젝트만 추가하도록 코드를 작성했는데...?
라고 생각해서 다시 코드를 읽어서 원인을 찾아보니
교환기능을 가진 오브젝트 일 때만 OnLastDialogueEvent에 Exchange를 추가해 주었지만
DialogueController는 하나의 스크립트이기 때문에 OnLastDialogueEvent() 값이 Null이 아니게 된 것이었다.
OnLastDialogueEvent() 값이 Null이 아니기 때문에 다른 오브젝트에서도 Exchange함수가 호출되고 있었다.
그래서 상자도 NPC도 다른 오브젝트도 다 마지막 멘트가 똑같았던 것이었다.
Exchange함수를 PropController에서ExchangeProp 스크립트에 따로 적어서
OnLastDialogueEvent에 한 번만 설정해 주도록 하고
Exchange안에서 교환 오브젝트인지 아닌지를 판단하는 코드를 써주었다.
var prop = data as PropData;
if (prop == null || prop.PropType != PropType.Exchange)
{
return;
}
var diamond = DataManager.Instance.Diamond;
var receiveGachaCoupon = diamond.ExchangeGachaCoupon();
//교환가능한 쿠폰수가 0개라면
if (receiveGachaCoupon == 0)
{
//마지막 멘트 업데이트
prop.DialogueTexts[prop.DialogueTexts.Length - 1] = "다이아가 부족하군요...";
}
else
{
//마지막 멘트 업데이트
prop.DialogueTexts[prop.DialogueTexts.Length - 1] = "교환해드렸습니다. 뽑기 하러 가시죠?";
//뽑기 쿠폰 획득
DataManager.Instance.ItemDatas[ItemType.GachaCoupon].Receive(receiveGachaCoupon);
}
하지만 이렇게 했는데도 여전히 바뀌지 않았다.
디버그를 해서 데이터 값을 확인해 주었는데 제대로 값이 바뀌는 것 같았다.
그래서 다시 한번 원인을 찾아보니
위에서 얘기한 문제로 인해 ScriptableObject의 DialogueTexts의 마지막 인수 값이
다 "다이아가 부족하군요..."로
스노볼이 굴렀던 것인가
데이터를 수정해 주니 문제없이 작동이 되었다!
▼ 해결 영상
● 회고
생각보다 만들면서 이것도 만들어야지 하면서 스케일이 커졌던 것 같다.
효과음이나 BGM도 다 못 넣었고 생각해 놨던 기믹도 구현을 못했다.
그리고 이번 과제를 하면서 세웠던 목표인 주석을 달면서 코드를 작성하지 못했다.
팀 프로젝트에서는 어느 정도 적으면서 코드를 작성하지만
역시 혼자 코드를 짤 때에는 아직 습관이 안 들어있는 것 같았다.
튜터님의 피드백을 받고 팀 프로젝트를 위해 더 노력할 것이다.
그리고 게임을 만들면서 캐릭터가 귀여워서 그런지 게임에 애정이 가는 것 같았다.
코드에 더 집중을 해야 했지만 모자 쓴 캐릭터가 귀여워서 그런지 모자 데이터 추가에 더 힘을 썼다.
그래서 그런지 밤새서 작업을 해도 전혀 힘들지가 않았다.
아직 부족한 부분이 많지만 시간 날 때마다 업데이트를 하면서 더 재밌는 게임으로 완성해가고 싶다.
'과제' 카테고리의 다른 글
[Unity,C#] 유니티 입문 팀 프로젝트 개발 2일차 (0) | 2025.02.25 |
---|---|
[Unity,C#] 유니티 입문 팀 프로젝트 개발 1일차 (0) | 2025.02.24 |
[Unity,C#] 메타버스 제작 과제 3일차 (0) | 2025.02.19 |
[Unity,C#] 메타버스 제작 과제 2일차 (0) | 2025.02.18 |
[Unity,C#] 메타버스 제작 과제 1일차 (0) | 2025.02.17 |