OverLap Function
Physics.OverlapSphere
- 구조: 중심 위치와 반지름을 기반으로 하는 구
- 리소스 사용 순서: 일반적인 사용 순서 중 상대적으로 높음
Physics.OverlapBox
- 구조: 중심 위치와 크기를 기반으로 하는 상자
- 리소스 사용 순서: 일반적인 사용 순서 중 중간
Physics.OverlapCapsule
- 구조: 두 점과 반지름을 기반으로 하는 캡슐
- 리소스 사용 순서: 일반적인 사용 순서 중 중간
Physics.OverlapMesh
- 구조: 메쉬와 메쉬의 변형을 기반으로 함
- 리소스 사용 순서: 상대적으로 높음, 메쉬의 복잡도에 따라 다를 수 있음
NonAlloc 함수
- Unity는
NonAlloc
버전의Overlap
함수도 제공합니다. - 예를 들면
Physics.OverlapSphereNonAlloc
,Physics.OverlapBoxNonAlloc
등이 있습니다. -
NonAlloc
버전의 함수들은 기본Overlap
함수와 비슷하게 작동 - 새로운 메모리 할당을 피하기 위해 기존 배열을 재사용합니다.
- 이로 인해 가비지 컬렉터(Garbage Collector)에 의한 프레임 드롭을 줄일 수 있습니다.
일반적인 Overlap
함수는 호출될 때마다 새로운 Collider 배열을 반환하기 때문에 자주 호출되는 상황에서는 가비지 생성이 많아질 수 있습니다. 반면, NonAlloc
버전은 미리 할당된 배열을 인자로 받아, 해당 배열에 결과를 채워 넣습니다.
예제:
Collider[] results = new Collider[10];
int numColliders = Physics.OverlapSphereNonAlloc(transform.position, 5.0f, results);
위 코드에서 results
배열은 미리 할당되어 있고, OverlapSphereNonAlloc
함수는 이 배열에 결과를 채워 넣습니다. numColliders
는 실제로 감지된 Collider의 수를 나타냅니다.
NonAlloc
함수들을 사용할 때, 배열의 크기가 충분히 크지 않으면 모든 결과를 가져오지 못할 수도 있으므로, 배열의 크기와 반환된 Collider의 수를 항상 확인해야 합니다.