Aller au contenu

FOS Lock Door System — Standard

Version 2.0.1 · exige FOS Essentials Core 1.3.0 ou plus récent · exige aussi FOS Access 1.0.1, FOS Localization 1.0.1, FOS Teleport 1.0.1, FOS UI Culling 1.0.1

Une porte que les joueurs verrouillent derrière eux : qui est à l’intérieur, mode « ne pas déranger », mode anonyme, une sonnette avec vue caméra, et des passages réservés à qui détient la clé.

Exige FOS Essentials Core 1.3.0, FOS Access 1.0.0, FOS Localization 1.0.0, FOS Teleport 1.0.0 et FOS UI Culling 1.0.0 — tous les quatre gratuits.

Vous venez de la version 1.0 ? Lisez d’abord CHANGELOG.md. Cette version ne partage aucun nom de classe avec elle, et un prefab que vous avez modifié ne se reporte pas tout seul.


Assets/FOS/LockDoorSystem/
└── Standard/ ← vous êtes ici

Une édition Pro viendra se placer à côté de celle-ci, en ajoutant des composants aux côtés de ceux du Standard et en dialoguant avec eux par leur API publique. Elle ne remplacera jamais un composant du prefab : la mise à niveau ne vous coûtera pas le câblage déjà fait.


  1. Posez FOS Essentials > FOS Lock Door System > Standard > Lock Door System dans votre scène.
  2. Redimensionnez la Detection Zone pour couvrir la pièce. Gardez son Collider sur Is Trigger, et ne désactivez jamais l’objet — un comportement désactivé cesse de tourner et la pièce paraîtrait vide définitivement. Vous pouvez en revanche éteindre son Mesh Renderer.
  3. Renseignez le nom de la pièce sur l’affichage. Il écrase ce que contiennent les textes dans la scène : modifiez-le là plutôt que sur le canvas.
  4. Pour une pièce réservée : ajoutez une Access List (du pack FOS Access) quelque part dans la scène, remplissez-la, et pointez le verrou et les passages vers elle.
  5. Déplacez les points de téléportation selon la pièce.

Une seule Access List sert toutes les portes du monde. N’en donnez pas une à chaque porte — elles téléchargeraient chacune la même liste.


Composant Rôle Synchro
FOSDoorLock Décide : verrouillé, ne pas déranger, anonyme Manuelle
FOSDoorOccupancy Porte la liste des personnes présentes Manuelle
FOSDoorBell L’épisode « quelqu’un sonne » Événements seulement
FOSDoorDisplay Tous les textes, icônes et voyants Aucune
FOSDoorPortal Un passage, éventuellement réservé Aucune

Seul FOSDoorLock décide de quelque chose. Tout le reste le lit. C’est cette séparation qui vous permet d’ajouter un second panneau, un voyant déporté ou votre propre comportement sans toucher à l’état : enregistrez-vous avec FOSRegister, exposez une méthode publique sans paramètre, et vous êtes prévenu à chaque changement.

Source Événement envoyé aux inscrits
FOSDoorLock FOSApplyDoorState, et FOSApplyDoorDenied en cas de refus
FOSDoorOccupancy FOSApplyOccupancy
FOSDoorBell FOSApplyBell

1.0 2.0
VIP Room Locked on start coché et Unlock when empty décoché
Lock For All Anyone can lock
Delay Seconds Display seconds, sur la sonnette
Anonym Length disparu — le masque est un texte que vous choisissez, le même pour tous
Room Name sur l’affichage
VIPChecker FOSAccessList, du pack FOS Access
HideSystem FOS UI Culling
TeleportLDS FOSDoorPortal, basé sur FOS Teleport

L’interface de l’éditeur est déjà traduite. Les textes affichés dans votre monde vous appartiennent, et se rangent dans la table de FOS Localization :

Clé Contient
lockdoor.ring.who Le message de sonnerie. Doit contenir le jeton {player}.
lockdoor.list.empty Affiché à la place de la liste quand la pièce est vide.
lockdoor.denied.notAllowed Affiché à quelqu’un qui n’a pas la clé.
lockdoor.denied.loading Affiché tant que la liste d’accès n’est pas arrivée.

Laissez le gestionnaire de langue vide et les textes de repli écrits dans l’affichage sont utilisés tels quels. Le pack fonctionne sans FOS Localization câblé — il ne parle alors qu’une seule langue.


L’état circule uniquement par des variables synchronisées. Un clic prend l’ownership, écrit, sérialise et applique localement ; tous les autres clients reçoivent OnDeserialization et appliquent la même chose. Rien n’est reconstruit depuis un événement : un joueur qui arrive en retard obtient donc l’état complet sans qu’on lui rejoue quoi que ce soit.

Les demandes vont dans l’autre sens : un client sollicite le propriétaire, et celui-ci vérifie qui appelle réellement avant d’agir. Personne ne peut ajouter, retirer ou sonner à la place d’un autre.

La sonnette ne synchronise rien du tout. Sonner est un événement, pas un état.


Le mode anonyme est cosmétique. Il masque les noms sur le panneau, à l’identique pour tous les joueurs — mais n’importe quel client peut déjà lister tout le monde dans l’instance, il ne cache donc rien à quelqu’un de déterminé. C’est une politesse, pas une protection.

L’accès est décidé sur le client du joueur lui-même, comme tout ce qui passe par Udon. Un client modifié peut répondre ce qu’il veut. Ce pack range un monde ; il ne le garde pas.

Ces deux limites sont réelles, et aucune n’a de solution disponible dans Udon. Concevez votre monde en les connaissant plutôt qu’en essayant de les contourner.


French Oasis Studio SAS — contact@frenchoasis.studio