Aller au contenu

FOS Access

Version 1.0.1 · exige FOS Essentials Core 1.0.0 ou plus récent

Répond à une seule question — ce joueur a-t-il la clé ? — et permet à n’importe quoi dans votre monde de la poser. Exige FOS Essentials Core 1.0.0.


Composant Rôle
FOSAccessList Porte les sources et la réponse. Un par liste.
FOSAccessGate Affiche ou masque des objets selon cette réponse. Un par endroit filtré.

Menu : Add Component > FOS Essentials > Access > ...


  1. Créez un GameObject vide et ajoutez FOS Essentials > Access > Access List.
  2. Remplissez au moins une source (voir plus bas).
  3. Pointez vers ce composant tout ce qui a besoin de la réponse — un FOSAccessGate, une porte, votre propre comportement.

Plusieurs listes indépendantes — VIP, staff, équipe d’un événement — signifient plusieurs composants FOSAccessList, chacun sur son objet. Une liste est une chose, pas une catégorie à l’intérieur d’un composant.


Elles sont cumulatives : il suffit qu’une seule accorde l’accès.

Source Modifiable sans republier Répond instantanément
Liste dans l’inspecteur non oui
Liste distante (URL) oui non — c’est un téléchargement
Produit VRChat oui non — elle arrive avec le rappel d’achat
Master de l’instance — oui

Le montage habituel réunit les deux premières : les deux ou trois personnes de confiance livrées avec le monde, plus une liste modifiable ensuite sans rouvrir Unity.

Un nom affiché par ligne. Les lignes vides sont ignorées, tout comme celles commençant par #, ce qui permet d’annoter le fichier :

# staff
Frankk Darko
# invités de l'événement de janvier
Some Player

La règle du # ne vaut que pour la liste distante. Dans l’inspecteur, un nom est un nom — un nom affiché a parfaitement le droit de commencer par un dièse.

L’inspecteur propose Import from a file et Export to a file, tous deux au format ci-dessus. Une liste de l’inspecteur peut donc être exportée et hébergée telle quelle, et un fichier déjà en ligne peut être ramené dans le prefab. Un nom par ligne fait une seule colonne : c’est pourquoi il n’y a pas de CSV ici, il n’y aurait rien à séparer.


Le chargement, et pourquoi un « non » n’est pas toujours un non

Section intitulée « Le chargement, et pourquoi un « non » n’est pas toujours un non »

Pendant qu’une liste distante se télécharge, la liste ne peut pas répondre honnêtement. FOSIsResolved() vous dit si la réponse est définitive :

  • un oui l’est toujours — les sources ne font qu’ajouter des personnes, aucune ne peut reprendre ce qu’une autre a accordé, donc quelqu’un déjà présent dans la liste de l’inspecteur y est pour de bon ;
  • un non ne l’est qu’une fois qu’il ne reste rien en cours de route.

Une interface qui refuse devrait distinguer les deux. « Vous n’êtes pas sur la liste » et « la liste n’est pas encore arrivée » ne se corrigent pas de la même façon — et un joueur à qui l’on ne dit ni l’un ni l’autre en conclut simplement que le bouton est cassé.


Appel Réponse
FOSIsAllowed() Le joueur local a-t-il la clé ?
FOSIsResolved() Cette réponse est-elle définitive ?
FOSState() StateLoading, StateReady ou StateFailed
FOSRegister(behaviour) Recevoir FOSApplyAccess à chaque changement de réponse

Un comportement qui s’enregistre doit exposer un FOSApplyAccess() public et sans paramètre.


FOSAccessGate se pose sur ce qu’il filtre plutôt que de le lister centralement : la règle vit là où vit l’objet, on la voit en sélectionnant l’objet, et elle le suit s’il est déplacé.

Il ne touche jamais à son propre GameObject. Ce n’est pas une politesse — un comportement Udon sur un objet désactivé cesse de tourner, il ne recevrait donc jamais la réponse censée le rallumer. Il resterait éteint jusqu’au redémarrage du monde, sans erreur ni explication. Laissé sans cibles explicites, il pilote ses enfants directs : posez la porte sur un objet vide et rangez dessous ce qui doit être filtré.


Il range un monde. Il ne le protège pas.

La réponse est calculée sur le client du joueur lui-même : un client modifié peut donc répondre ce qu’il veut, et une liste distante servie par une URL publique est lisible par n’importe qui. Udon n’offre rien de mieux — il n’existe aucune vérification côté serveur à laquelle en appeler.

Ne mettez dans une liste que des noms affichés, et ne laissez jamais ce pack décider de quoi que ce soit dont l’accès par un visiteur déterminé vous gênerait.


French Oasis Studio SAS — contact@frenchoasis.studio