Address
304 North Cardinal St.
Dorchester Center, MA 02124

Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM

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.

Vous venez de commencer votre aventure Unity ?

Consultez cet article pour commencer de la meilleure façon possible : Unity Le meilleur conseil pour débuter

Découvrez nos autres articles sur Unity :

Laisser un commentaire

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