Unity layer mask inspector

Maîtriser LayerMask dans Unity

Les « LayerMask » dans Unity sont essentielles pour spécifier un ou plusieurs layers sur lesquels des actions spécifiques peuvent être appliquées. Vous pouvez les considérer comme des tableaux contenant des layers.

Table des matières

Utiliser les layers via l’inspecteur

Vous pouvez facilement utiliser les Layer Masks via l’inspecteur Unity :


using UnityEngine;

public class RaycastBehaviour : MonoBehaviour
{
    public LayerMask layerMask;

    public void RayCast()
    {
        if (Physics.Raycast(transform.position, transform.forward, out RaycastHit hit, Mathf.Infinity, layerMask))
        {
            // Actions à effectuer avec l'objet touché
        }
    }
}
    

Unity layer mask inspector

C’est grâce au LayerMask que vous pouvez définir facilement quels layers seront affectés par vos actions, comme le Raycast.

Créer un LayerMask par code

Vous pouvez également créer un LayerMask par code à l’aide de la fonction statique « GetMask » :


using UnityEngine;

public class RaycastBehaviour : MonoBehaviour
{
    public LayerMask layerMask;

    private void CreateLayerMask()
    {
        // Plusieurs layers
        layerMask = LayerMask.GetMask(new string[] { "UI", "Default" });

        // Un seul layer
        layerMask = LayerMask.GetMask("UI");

        // Tous sauf un
        layerMask = ~LayerMask.GetMask("UI");
    }
}
    

Récupérer un LayerMask avec tous les layers

Voici comment récupérer tous les layers:


int allLayers = Physics.AllLayers;

Récupérer l’index d’un layer

Si vous avez besoin de récupérer l’index d’un layer :


int indexLayer = LayerMask.NameToLayer("UI");
    

Convertir un index de layer en LayerMask

Vous pouvez convertir un index de layer en un LayerMask :


int indexLayer = LayerMask.NameToLayer("UI");
LayerMask layerMask = 1 << indexLayer;
    

Récupérer le nom d’un index de layer

Si vous souhaitez récupérer le nom d’un index de layer :


int indexLayer = LayerMask.NameToLayer("Default");
string nameLayer = LayerMask.LayerToName(indexLayer);
    

Ajouter / supprimer un layer par code

Vous pouvez ajouter ou supprimer des layers par code :


public LayerMask layerMask;

public void AddLayer(int layerIndex)
{
    layerMask |= (1 << layerIndex);
}

public void RemoveLayer(int layerIndex)
{
    layerMask &= ~(1 << layerIndex);
}

public void Example()
{
    AddLayer(LayerMask.NameToLayer("UI"));
}
    

Savoir si un LayerMask contient un layer

Si vous devez savoir si un LayerMask contient un layer :


public LayerMask layerMask;

public bool Contains(int layerIndex)
{
    return layerMask == (layerMask | (1 << layerIndex));
}

public void Example()
{
    if (Contains(LayerMask.NameToLayer("UI"))) 
    {
        // Faites quelque chose
    }
}
    

J’espère que cet article vous a été utile. Maintenant, vous avez les connaissances nécessaires pour gérer efficacement vos Layer Masks dans Unity.

Un conseil en plus, il serait plus propre de stocker toutes les fonctions dans un fichier d’extension.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *