6-7. 15조 Destroy관련 Detector 스크립트 수정, Item 추가

keubung·2024년 12월 4일

1. Destroy관련 Detector 스크립트 수정

문제 상황 : 파괴되는 오브젝트(FallingObstacleObject)가 감지된 후 파괴될 때 Detector의 List에서 Null이 생겨 Count가 변하게 됨...?

  • 리스트 반복문을 뒤에서부터 돌면서 파괴된 아이템 정리
    private IEnumerator CoCheckTimer()
    {
        while (true)
        {
            closestdistance = float.MaxValue;
            for (int i = detectedObjectList.Count - 1; i >= 0; i--)
            {
                if (HasLineOfSight(detectedObjectList[i]))
                {
                    UpdateDistances(detectedObjectList[i], ref closestdistance);
                    break;
                }
            }
            HandleAlarm(closestdistance);
            yield return YieldCache.WaitForSeconds(updateInterval);
        }
    }
    
    public void Reveal()
    {
        for (int i = detectedObjectList.Count - 1; i >= 0; i--)
        {
            detectedObjectList[i].Revealed();
            detectedObjectList.RemoveAt(i);
        }
    }

+ 파괴가 되어 Null이 되었음에도 Null조건의 if문을 타지 않고 넘어감.

  • Null상태가 되고 리스트를 정리하기 전 Null찌꺼기가 남아있는 상태가 걸린 것일 수 있음.
    -> 아이템들의 상태도 관리를 해주는 것이 좋다.
    -> 아이템 상태와 관련된 Enum이나 변수를 만들어 관리
    /// <summary>
    /// 프롭 상태 타입
    /// </summary>
    public enum PropStateType
    {
        None = 0,
        Detected,
        Revealed,
    }

2. Item 추가

  • 실제 사용 가능한 실물 아이템 추가
  • 맵 배치 커스텀 에디터를 사용하여 아이템을 배치할 때 필요한 아이템 이미지 작업 (이미지는 들어있지 않음)
profile
김나영(Unity_6기)

0개의 댓글