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.
Composants
Section intitulée « Composants »| 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 > ...
Mise en place
Section intitulée « Mise en place »- Créez un GameObject vide et ajoutez FOS Essentials > Access > Access List.
- Remplissez au moins une source (voir plus bas).
- 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.
Les quatre sources
Section intitulée « Les quatre sources »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.
Le format de la liste distante
Section intitulée « Le format de la liste distante »Un nom affiché par ligne. Les lignes vides sont ignorées, tout comme celles commençant
par #, ce qui permet d’annoter le fichier :
# staffFrankk Darko# invités de l'événement de janvierSome PlayerLa 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.
Déplacer des noms de l’une à l’autre
Section intitulée « Déplacer des noms de l’une à l’autre »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é.
API publique
Section intitulée « API publique »| 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.
La porte
Section intitulée « La porte »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é.
Ce que ce pack n’est pas
Section intitulée « Ce que ce pack n’est pas »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
