수색…
레이어 사용법
유니티 레이어는 태그와 비슷하지만 상호 작용하거나 특정 방식으로 동작해야하는 객체를 정의하는 데 사용할 수 있지만 레이어는 주로 Physics
클래스의 함수와 함께 사용됩니다. Unity Documentation - Physics
레이어는 정수로 표현되며 다음과 같은 방식으로 함수에 전달 될 수 있습니다.
using UnityEngine;
class LayerExample {
public int layer;
void Start()
{
Collider[] colliders = Physics.OverlapSphere(transform.position, 5f, layer);
}
}
이 방식으로 레이어를 사용하면 완료된 계산에 지정된 레이어가있는 Collider 만 포함됩니다. 따라서 로직을 더 단순하게 만들뿐만 아니라 성능을 향상시킬 수 있습니다.
레이어 마스크 구조
LayerMask
구조는 문제의 함수에 정수를 전달하는 것과 거의 똑같이 기능하는 인터페이스입니다. 그러나 가장 큰 이점은 사용자가 검사기의 드롭 다운 메뉴에서 해당 레이어를 선택할 수 있도록 허용하는 것입니다.
using UnityEngine;
class LayerMaskExample{
public LayerMask mask;
public Vector3 direction;
void Start()
{
if(Physics.Raycast(transform.position, direction, 35f, mask))
{
Debug.Log("Raycast hit");
}
{
}
또한 레이어 이름을 인덱스 또는 인덱스로 레이어 이름으로 변환 할 수있는 여러 정적 함수가 있습니다.
using UnityEngine;
class NameToLayerExample{
void Start()
{
int layerindex = LayerMask.NameToLayer("Obstacle");
{
}
레이어 검사를 쉽게하기 위해 다음 확장 메서드를 정의하십시오.
public static bool IsInLayerMask(this GameObject @object, LayerMask layerMask)
{
bool result = (1 << @object.layer & layerMask) == 0;
return result;
}
이 메소드는 게임 객체가 (편집기에서 선택된) layermask에 있는지 여부를 확인할 수있게합니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow