몬스터를 Spawn할 때 제네릭으로 컴포넌트 추가 중.
DeSpawn 이후 다른 몬스터 타입으로 다시 Spawn할 때, 다른 컴포넌트가 추가되는 상황 (ex. 근접몬스터 디스폰 후 원거리몬스터 스폰 시 2개의 컴포넌트를 가지게 됨)
즉, 오브젝트 풀에서 몬스터를 꺼내올 때 기존의 몬스터 컴포넌트를 제거하고 새롭게 스폰될 몬스터의 컴포넌트로 교체하는 작업이 필요했다.
Monster.OnDisable에서 Destroy(this) <- 위의 상황은 해결됐지만, DeSpawn 이후 같은 몬스터 타입으로 다시 Spawn할 때, 컴포넌트가 아예 사라지는 문제 발생
ObjectManager.DeSpawn()에서 Destroy(monster) <- 위와 똑같이 동작 중.
이유 : Destroy()는 파괴를 한 개의 프레임이 모두 끝날 때까지 대기 후, 다음 프레임의 렌더링 직전에 파괴를 수행함.
GetOrAddComponent를 이용하기 때문에 기존에 있던 컴포넌트와 새로 추가할 컴포넌트가 같다면, 추가되지 않고 삭제만 진행됨.
따라서 한 개의 프레임에서 Spawn 후 바로 DeSpawn하고 다시 Spawn하도록 테스트 코드를 짠 내 코드에서는 정상적으로 Spawn된 뒤 컴포넌트가 사라지는 문제가 발생
그래서 DestroyImmediate() 사용해봤더니, MissingComponent Error 발생 << +위험한 메서드라서 사용하지 않기로 함
SpawnMonster 메서드를 따로 작성하고, 몬스터의 스폰은 이 메서드를 이용한다.