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 :
truesi la condition du rôle est rempliefalsesinon
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érifierImplicitOnly- Sitrue, vérifie uniquement les étiquettes de rôle implicites (par défaut :false)All- Sitrue, nécessite que tous les rôles correspondent ; sifalse, 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érifierImplicitOnly- Sitrue, 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érifierrole- Le nom du rôle ou l'étiquette à vérifierImplicitOnly- Sitrue, 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érifierImplicitOnly- Sitrue, vérifie uniquement les étiquettes de rôle implicites (par défaut :false)All- Sitrue, nécessite que tous les rôles correspondent ; sifalse, 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érifierroles- Tableau de noms/étiquettes de rôle à vérifierImplicitOnly- Sitrue, vérifie uniquement les étiquettes de rôle implicites (par défaut :false)All- Sitrue, nécessite que tous les rôles correspondent ; sifalse, 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 :
DataListcontenant uniquement les étiquettes de rôle explicites pour le joueurDataListvide 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.
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
KeyPadRoldu rôle de plus haute priorité nullsi 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
KeyPadRolavec un nom de rôle correspondant nullsi le rôle n'est pas trouvé ou si le système n'est pas initialisé
Comportement :
- Retourne
nullsi 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 :
Colordu rôle de plus haute priorité.Color.whitesi 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érifierimplicitOnly- Sitrue, ne considère que les tags de rôle implicites (par défaut :false)
Retourne :
- Tableau de joueurs
VRCPlayerApiqui 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é