오늘은 쉬어가는 느낌으로
프로젝트를 진행하면서 겪은 상황을 공유하고자 합니다.
문제 상황
소환 가능한 유닛의 수를 제한하는 코드를 작성했습니다.
[SerializeField]
private int _maxSummonUnitCount = 5;
//최대 소환 가능 유닛 수
public int MaxSummonUnitCount
{
get => _maxSummonUnitCount;
set => _maxSummonUnitCount = value;
}
// 소환 가능 수 비교
public bool CanSummonUnit()
{
bool canSummon = SummonUnitCount < MaxSummonUnitCount;
if (!canSummon)
{
Debug.Log($"최대 소환 가능 수({MaxSummonUnitCount})에 도달했습니다!");
}
return canSummon;
}
기존에는 _maxSummonUnitCount = 1; 로 두고 진행하다가
5로 변경한 후 실행해보니
웬걸? 유닛을 1명 이상 배치하지 못하는 문제가 발생했습니다.
[SerializeField]로 설정해 놓아서 Inspecter에서 확인해 봐도 5인데
왜 안되지, 하면서 한 30분 쳐다본 끝에 알아냈습니다.
원인
해당 스크립트가 포함된 프리팹을 전투 씬에서 동적으로 생성하여 사용 중이었습니다.
코드에서 값을 5로 변경했지만, 프리팹에 저장된 이전 값(1)이 먼저 적용되고 있었습니다.
해결 방법
해당 프리팹을 열었다가 나오니 의도한 값 5가 반영됐습니다.
코드상으로는 전혀 문제 될 게 없었는데 문제 있는 줄 알고 한참 봤네요.
해결하고 나니 어처구니가 없어서;; 이런 경우도 있군요.