Aller au contenu principal

API

Le système Security Keypad fournit une API publique qui vous permet de vérifier les rôles et permissions des joueurs depuis vos propres scripts Udon.

Comprendre les Étiquettes de Rôle

Le système Security Keypad utilise deux types d'étiquettes de rôle :

Rôles Explicites : Étiquettes de rôles auxquels le joueur s'est connecté explicitement, soit en entrant un code, par autologin ou accordé manuellement par n'importe quel système.

Rôles Implicites : Étiquettes accordées parce que vous avez été explicitement assigné à l'un de leurs parents. Par exemple, si vous avez le rôle VIP+ assigné et que ce rôle a VIP comme rôle enfant, vous recevrez l'étiquette implicite VIP.

Ces 2 listes sont combinées en une seule liste Roles qui est synchronisée avec les utilisateurs distants. Cette division est utilisée en interne pour déterminer si vous devez vous déconnecter d'un rôle, et peut également être utilisée par des systèmes externes pour effectuer toutes sortes de vérifications selon vos besoins.

Événements Publics

Pour recevoir des événements dans vos propres scripts Udon, vous devez d'abord ajouter votre UdonBehaviour à la liste Event Receivers du SecurityKeypad. Vous pouvez le faire manuellement dans l'inspecteur ou avec les méthodes :

RegisterListener(UdonBehaviour listener)
UnregisterListener(UdonBehaviour listener)

Une fois enregistré, votre script Udon peut implémenter les méthodes d'événement suivantes :

- OnUserLogin(string playername, string rolename)
- OnUserLogout(string playername, string rolename)
- OnUserExplicitLogin(string playername, string rolename)
- OnUserExplicitLogout(string playername, string rolename)

Méthodes d'API Publique

HasRole

La méthode HasRole vérifie si un joueur a un ou plusieurs rôles. Cette méthode a plusieurs surcharges pour fournir de la flexibilité dans la façon dont vous vérifiez les rôles.

Retourne :

  • true si la condition du rôle est remplie
  • false sinon

Exemples :

public SecurityKeypad keypad;
bool isAdmin = false;

void Start(){
//Vérifier si la référence du keypad est valide
if(!Utilities.IsValid(keypad)) return;

//Vérifier si le joueur local est admin
isAdmin = keypad.HasRole("Admin")
}

HasRole(KeyPadRol role)

Vérifie si le joueur local s'est connecté à un rôle spécifique.

Signature :

public bool HasRole(KeyPadRol role)

Paramètres :

  • role - Le composant KeyPadRol à vérifier

HasRole(KeyPadRol[] roles, bool ImplicitOnly, bool All)

Vérifie si le joueur local a un ou plusieurs rôles d'un tableau de composants KeyPadRol.

Signature :

public bool HasRole(KeyPadRol[] roles, bool ImplicitOnly = false, bool All = false)

Paramètres :

  • roles - Tableau de composants KeyPadRol à vérifier
  • ImplicitOnly - Si true, vérifie uniquement les étiquettes de rôle implicites (par défaut : false)
  • All - Si true, nécessite que tous les rôles correspondent ; si false, nécessite au moins un (par défaut : false)

HasRole(string role, bool ImplicitOnly)

Vérifie si le joueur local a un rôle par nom de rôle.

Signature :

public bool HasRole(string role, bool ImplicitOnly = false)

Paramètres :

  • role - Le nom du rôle ou l'étiquette à vérifier
  • ImplicitOnly - Si true, vérifie uniquement les étiquettes de rôle implicites (par défaut : false)

HasRole(VRCPlayerApi player, string role, bool ImplicitOnly)

Vérifie si un joueur spécifique a un rôle par nom de rôle.

Signature :

public bool HasRole(VRCPlayerApi player, string role, bool ImplicitOnly = false)

Paramètres :

  • player - Le joueur à vérifier
  • role - Le nom du rôle ou l'étiquette à vérifier
  • ImplicitOnly - Si true, vérifie uniquement les étiquettes de rôle implicites (par défaut : false)

HasRole(string[] roles, bool ImplicitOnly, bool All)

Vérifie si le joueur local a un ou plusieurs rôles d'un tableau de noms/étiquettes de rôle.

Signature :

public bool HasRole(string[] roles, bool ImplicitOnly = false, bool All = false)

Paramètres :

  • roles - Tableau de noms/étiquettes de rôle à vérifier
  • ImplicitOnly - Si true, vérifie uniquement les étiquettes de rôle implicites (par défaut : false)
  • All - Si true, nécessite que tous les rôles correspondent ; si false, nécessite au moins un (par défaut : false)

HasRole(VRCPlayerApi player, string[] roles, bool ImplicitOnly, bool All)

Vérifie si un joueur spécifique a un ou plusieurs rôles d'un tableau de noms/étiquettes de rôle.

Signature :

public bool HasRole(VRCPlayerApi player, string[] roles, bool ImplicitOnly = false, bool All = false)

Paramètres :

  • player - Le joueur à vérifier
  • roles - Tableau de noms/étiquettes de rôle à vérifier
  • ImplicitOnly - Si true, vérifie uniquement les étiquettes de rôle implicites (par défaut : false)
  • All - Si true, nécessite que tous les rôles correspondent ; si false, nécessite au moins un (par défaut : false)

GetRoles

Les méthodes GetRoles récupèrent les étiquettes de rôle attribuées à un joueur. Ces méthodes ont plusieurs surcharges pour différents cas d'usage.

Retourne :

  • DataList contenant uniquement les étiquettes de rôle explicites pour le joueur
  • DataList vide si le système n'est pas initialisé ou si aucune donnée de joueur n'est trouvée

GetRoles()

Obtient toutes les étiquettes de rôle attribuées au joueur local.

Signature :

public DataList GetRoles()

GetRoles(VRCPlayerApi player)

Obtient toutes les étiquettes de rôle attribuées à un joueur spécifique.

Signature :

public DataList GetRoles(VRCPlayerApi player)

Paramètres :

  • player - Le joueur dont obtenir les rôles

Comportement :

  • Retourne une liste vide si appelé avant l'initialisation (enregistre un avertissement)
  • Retourne une liste vide si aucune donnée de joueur n'est trouvée

GetExplicitRoles()

Obtient uniquement les étiquettes de rôle explicites attribuées au joueur local (rôles auxquels ils se sont connectés).

Signature :

public DataList GetExplicitRoles()

GetExplicitRoles(VRCPlayerApi player)

Obtient uniquement les étiquettes de rôle explicites attribuées à un joueur spécifique.

Signature :

public DataList GetExplicitRoles(VRCPlayerApi player)

Paramètres :

  • player - Le joueur dont obtenir les rôles explicites

Comportement :

  • Retourne une liste vide si appelé avant l'initialisation (enregistre un avertissement)
  • Retourne une liste vide si aucune donnée de joueur n'est trouvée
  • Inclut uniquement les rôles auxquels le joueur s'est activement connecté, pas les rôles passifs/automatiques

GetImplicitRoles()

Obtient uniquement les étiquettes de rôle implicites attribuées au joueur local (rôles attribués automatiquement).

Signature :

public DataList GetImplicitRoles()

GetImplicitRoles(VRCPlayerApi player)

Obtient uniquement les étiquettes de rôle implicites attribuées à un joueur spécifique.

Signature :

public DataList GetImplicitRoles(VRCPlayerApi player)

Paramètres :

  • player - Le joueur dont obtenir les rôles implicites

Comportement :

  • Retourne une liste vide si appelé avant l'initialisation (enregistre un avertissement)
  • Retourne une liste vide si aucune donnée de joueur n'est trouvée
  • Inclut uniquement les rôles attribués automatiquement, pas les rôles nécessitant une connexion explicite

GetHighestRole

Les méthodes GetHighestRole récupèrent le rôle de plus haute priorité attribué à un joueur en fonction de la hiérarchie des rôles.

remarque

Le rôle le plus élevé est déterminé par l'ordre dans la hiérarchie dans lequel les rôles sont placés, de haut en bas.

Retourne :

  • Composant KeyPadRol du rôle de plus haute priorité
  • null si le joueur n'a pas de rôles ou si le système n'est pas initialisé

Exemple :

public UdonBehaviour securityKeypad;

public void DisplayPlayerHighestRole(VRCPlayerApi targetPlayer)
{
KeyPadRol highestRole = securityKeypad.GetHighestRole(targetPlayer);

if (highestRole != null)
{
Debug.Log(targetPlayer.displayName + "'s highest role is: " + highestRole.rolName);

// Accéder aux propriétés du rôle
string roleName = highestRole.rolName;
Color roleColor = highestRole.color;
}
else
{
Debug.Log(targetPlayer.displayName + " has no roles");
}
}

GetHighestRole()

Obtient le rôle le plus élevé attribué au joueur local.

Signature :

public KeyPadRol GetHighestRole()

GetHighestRole(VRCPlayerApi player)

Obtient le rôle le plus élevé attribué à un joueur spécifique.

Signature :

public KeyPadRol GetHighestRole(VRCPlayerApi player)

Paramètres :

  • player - Le joueur dont obtenir le rôle le plus élevé

GetRoleByName

Obtient un composant KeyPadRol par son nom de rôle.

Signature :

public KeyPadRol GetRoleByName(string roleName)

Paramètres :

  • roleName - Le nom du rôle à récupérer

Retourne :

  • Composant KeyPadRol avec un nom de rôle correspondant
  • null si le rôle n'est pas trouvé ou si le système n'est pas initialisé

Comportement :

  • Retourne null si appelé avant l'initialisation (enregistre un avertissement)
  • Recherche à travers tous les objets de rôle pour trouver un nom correspondant
  • Correspondance de nom sensible à la casse

Exemple :

public UdonBehaviour securityKeypad;

void GetSpecificRole()
{
KeyPadRol adminRole = securityKeypad.GetRoleByName("admin");

if (adminRole != null)
{
Debug.Log("Found admin role!");
Debug.Log("Admin color: " + adminRole.color);

// Vérifier si le joueur local a ce rôle
bool isAdmin = securityKeypad.HasRole(adminRole);
Debug.Log("I am admin: " + isAdmin);
}
else
{
Debug.Log("Admin role not found in keypad configuration");
}
}

GetRoleColor

Les méthodes GetRoleColor récupèrent la couleur du rôle le plus élevé d'un joueur.

Retourne :

  • Color du rôle de plus haute priorité.
  • Color.white si le joueur n'a pas de rôles, si le système n'est pas initialisé, ou si aucune donnée de joueur n'est trouvée.

Exemple :

public UdonBehaviour securityKeypad;
public MeshRenderer playerNameplate;

void UpdateMyNameplateColor()
{
Color myRoleColor = securityKeypad.GetRoleColor();

// Appliquer la couleur du rôle à la plaque signalétique
playerNameplate.material.color = myRoleColor;

Debug.Log("My role color is: " + myRoleColor);
}

GetRoleColor()

Obtient la couleur du rôle le plus élevé attribué au joueur local.

Signature :

public Color GetRoleColor()

GetRoleColor(VRCPlayerApi player)

Obtient la couleur du rôle le plus élevé attribué à un joueur spécifique.

Signature :

public Color GetRoleColor(VRCPlayerApi player)

Paramètres :

  • player - Le joueur dont obtenir la couleur du rôle

GetPlayersWithRole(KeyPadRol role, bool implicitOnly)

Obtient une liste des joueurs qui possèdent un rôle spécifique.

Signature :

public VRCPlayerApi[] GetPlayersWithRole(KeyPadRol role, bool implicitOnly = false)

Paramètres :

  • role - Le composant KeyPadRol à vérifier
  • implicitOnly - Si true, ne considère que les tags de rôle implicites (par défaut : false)

Retourne :

  • Tableau de joueurs VRCPlayerApi qui possèdent le rôle spécifié
  • Tableau vide si aucun joueur n'a ce rôle ou si le système n'est pas initialisé