Suche…


Layer-Nutzung

Unity-Layer ähneln Tags darin, dass sie zum Definieren von Objekten verwendet werden können, mit denen interagiert werden soll oder sich auf bestimmte Weise verhalten soll. Layer werden jedoch hauptsächlich mit Funktionen in der Klasse Physics : Unity-Dokumentation - Physik

Layer werden durch eine ganze Zahl dargestellt und können auf diese Weise an die Funktionen übergeben werden:

using UnityEngine;
class LayerExample {

    public int layer;

    void Start()
    {
        Collider[] colliders = Physics.OverlapSphere(transform.position, 5f, layer);
    }
}

Die Verwendung einer Ebene auf diese Weise schließt nur Collider ein, deren GameObjects die in den Berechnungen angegebene Ebene angegeben hat. Dies macht weitere Logik einfacher und verbessert die Leistung.

LayerMask-Struktur

Die LayerMask Struktur ist eine Schnittstelle, die fast genauso funktioniert wie das Übergeben einer Ganzzahl an die betreffende Funktion. Der größte Vorteil besteht jedoch darin, dass der Benutzer die betreffende Ebene aus einem Dropdown-Menü im Inspektor auswählen kann.

using UnityEngine;
class LayerMaskExample{

    public LayerMask mask;
    public Vector3 direction;

    void Start()
    {
        if(Physics.Raycast(transform.position, direction, 35f, mask))
        {
            Debug.Log("Raycast hit");
        }
    {
}

Es verfügt auch über mehrere statische Funktionen, mit denen Ebenennamen in Indizes oder Indizes in Ebenennamen umgewandelt werden können.

using UnityEngine;
class NameToLayerExample{

    void Start()
    {
        int layerindex = LayerMask.NameToLayer("Obstacle");
    {
}

Um die Ebenenüberprüfung zu vereinfachen, definieren Sie die folgende Erweiterungsmethode.

public static bool IsInLayerMask(this GameObject @object, LayerMask layerMask)
{
    bool result = (1 << @object.layer & layerMask) == 0;

    return result;
}

Mit dieser Methode können Sie überprüfen, ob sich ein Spielobjekt in einer Layermask befindet (im Editor ausgewählt) oder nicht.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow