수색…


레이어 사용법

유니티 레이어는 태그와 비슷하지만 상호 작용하거나 특정 방식으로 동작해야하는 객체를 정의하는 데 사용할 수 있지만 레이어는 주로 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