Unity의 Physics.Overlap[콜라이더이름] 메서드는 지정된 영역 내에서 콜라이더와 충돌하는 GameObject를 찾는 데 사용되는 메서드입니다. 이 메서드는 다음과 같은 두 가지 버전이 있습니다.
- 일반 버전: 이 버전은 충돌하는 GameObject의 배열을 반환합니다.
- NonAlloc 버전: 이 버전은 충돌하는 GameObject의 참조를 반환합니다.
OverlapSphere() VS OverlapSphereNonAlloc()
Physics.OverlapSphere() | Physics.OverlapSphereNonAlloc() | |
메모리 사용량 | 새로운 배열을 할당하여 결과를 반환 | 기존 배열을 사용하여 결과를 반환 |
성능 | 메모리 할당 및 해제 과정이 추가되어 성능이 저하될 수 있음 | 메모리 할당 및 해제 과정이 없기 때문에 성능이 향상될 수 있음 |
사용법 | 새로운 배열을 생성하여 결과를 저장해야 함 | 기존 배열을 사용하여 결과를 저장할 수 있음 |
Physics.OverlapSphere() 메서드는 지정된 반경 내의 충돌하는 오브젝트의 목록을 반환합니다. 이 메서드는 결과를 저장하기 위해 새로운 배열을 할당합니다. 따라서 메모리 사용량이 증가하고 성능이 저하될 수 있습니다.
Physics.OverlapSphereNonAlloc() 메서드는 지정된 반경 내의 충돌하는 오브젝트의 목록을 반환합니다. 이 메서드는 결과를 저장하기 위해 기존 배열을 사용합니다. 따라서 메모리 사용량이 감소하고 성능이 향상될 수 있습니다.
다음은 두 메서드의 사용 예입니다.
// Physics.OverlapSphere() 메서드 사용 예
int numColliders = Physics.OverlapSphere(position, radius);
Collider[] colliders = new Collider[numColliders];
Physics.OverlapSphere(position, radius, colliders);
// Physics.OverlapSphereNonAlloc() 메서드 사용 예
Collider[] colliders = new Collider[10];
int numColliders = Physics.OverlapSphereNonAlloc(position, radius, colliders);
첫 번째 예에서는 Physics.OverlapSphere() 메서드를 사용하여 새로운 배열을 생성하고, 그 배열에 결과를 저장합니다. 두 번째 예에서는 Physics.OverlapSphereNonAlloc() 메서드를 사용하여 기존 배열을 사용하여 결과를 저장합니다.
일반적으로 Physics.OverlapSphereNonAlloc() 메서드를 사용하는 것이 더 효율적입니다. 하지만 기존에 할당된 배열이 없다면 Physics.OverlapSphere() 메서드를 사용해야 합니다.
'Unity > Tip' 카테고리의 다른 글
Unity 코드 문서화 : summary 태그 활용 (2) | 2024.04.26 |
---|---|
뷰포트 영역 안에 있는지 검사하는 방법 (0) | 2024.03.21 |
유니티의 메타(meta) 파일은 무엇인가? (0) | 2023.12.22 |
AssetDatabase 클래스를 사용하여 스크립트에서 에셋 생성 및 수정 (0) | 2023.12.21 |
Unity에서 패키지의 버전을 변경하는 방법 (0) | 2023.12.17 |