플레이어와 빈 접시의 콜라이더가 충돌하면 _canCleanFood라는 리스트에 빈 접시 오브젝트를 담는다.
그리고 만약 충돌을 벗어나면 _canCleanFood에서 해당 빈 접시 오브젝트를 삭제한다.
하지만 어쩌선지 리스트 안에 있어야하는 빈접시 오브젝트가 없다는 오류가 떴다.
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag(TagName.CookedFood))
{
CookedFood cookedFood = other.gameObject.GetComponent<CookedFood>();
if (cookedFood != null)
{
if (cookedFood.ShouldClean && !_isTycoonGameOver)
{
if (!_canCleaningFoods.Contains(other.gameObject))
{
_canCleaningFoods.Add(other.gameObject);
}
}
else if (cookedFood.CanHold && _holdingFood == null)
{
_canHoldFood = other.gameObject;
}
}
}
}
private void OnTriggerExit(Collider other)
{
if (other.gameObject.CompareTag(TagName.CookedFood))
{
CookedFood cookedFood = other.gameObject.GetComponent<CookedFood>();
if (cookedFood != null)
{
if (cookedFood.ShouldClean && _canCleaningFoods.Count > 0)
{
if (_canCleaningFoods.Contains(other.gameObject))
{
_canCleaningFoods.Remove(other.gameObject);
}
}
else if (_canHoldFood == other.gameObject)
{
_canHoldFood = null;
}
}
}
}
팀원들과 이것저것 시도해봤는데,
플레이어가 빠르게 빈 접시 오브젝트를 지나가면서 OnTriggerExit안 코드가 제대로 작동되지 않아 발생하고,
다른 오브젝트의 인스펙터창을 보고 오면 리스트에 있던 오브젝트가 사라지는 것을 발견했다.
또 인스펙터창을 Debug로 설정했을 때만 오류가 발생하는 것을 발견했다. (빈도 수가 늘어나는 것일 수도 있다.)
일단 배포 직전에 오류가 터져서 배포를 더 이상 늦추면 안되겠다고 판단해
오류 해결을 잠시 뒤로 미뤄뒀다..
배포하니 아니나 다를까 타이쿤에서 진행이 안되는 오류가 발생했다는 설문결과가 나왔다.
'내일배움캠프(Unity)' 카테고리의 다른 글
빌드 최적화 (0) | 2024.02.22 |
---|---|
Project ID, UnityEditor (0) | 2024.02.21 |
Sprite Atlas (0) | 2024.02.20 |
Unity에서 Fog 구현 (0) | 2024.02.20 |
TIL - Cinemachine DollyTrack, 오류 수정 (0) | 2024.02.07 |