FOS Lock Door System — Standard
Version 2.0.1 · benötigt FOS Essentials Core 1.3.0 oder neuer · benötigt außerdem FOS Access 1.0.1, FOS Localization 1.0.1, FOS Teleport 1.0.1, FOS UI Culling 1.0.1
Eine Tür, die Spielende hinter sich abschließen: wer drin ist, Bitte-nicht-stören, anonymer Modus, eine Klingel mit Kamerabild und Durchgänge, die dem Schlüsselinhaber vorbehalten sind.
Benötigt FOS Essentials Core 1.3.0, FOS Access 1.0.0, FOS Localization 1.0.0, FOS Teleport 1.0.0 und FOS UI Culling 1.0.0 — alle vier kostenlos.
Du kommst von Version 1.0? Lies zuerst CHANGELOG.md. Diese Fassung teilt keinen
einzigen Klassennamen mit ihr, und ein Prefab, das du verändert hast, wandert nicht von
selbst mit.
Editionen
Abschnitt betitelt „Editionen“Assets/FOS/LockDoorSystem/└── Standard/ ← du bist hierEine Pro-Edition wird sich daneben stellen: Sie fügt Komponenten neben denen des Standard hinzu und spricht mit ihnen über deren öffentliche API. Sie ersetzt nie eine Komponente am Prefab, ein Umstieg kostet dich also nicht die bereits erledigte Verdrahtung.
Einrichtung
Abschnitt betitelt „Einrichtung“- Ziehe FOS Essentials > FOS Lock Door System > Standard > Lock Door System in deine Szene.
- Passe die Detection Zone an den Raum an. Lass ihren Collider auf Is Trigger und deaktiviere das Objekt niemals — ein deaktiviertes Verhalten läuft nicht mehr, und der Raum wirkte dauerhaft leer. Den Mesh Renderer darfst du abschalten.
- Trage den Raumnamen an der Anzeige ein. Er überschreibt, was die Texte in der Szene enthalten: bearbeite ihn dort und nicht am Canvas.
- Für einen reservierten Raum: Füge irgendwo in der Szene eine Access List (aus FOS Access) hinzu, fülle sie und richte Schloss und Durchgänge darauf aus.
- Verschiebe die Teleportpunkte passend zum Raum.
Eine einzige Access List bedient jede Tür der Welt. Gib nicht jeder Tür eine eigene — jede würde dieselbe Liste herunterladen.
Komponenten
Abschnitt betitelt „Komponenten“| Komponente | Aufgabe | Sync |
|---|---|---|
FOSDoorLock |
Entscheidet: abgeschlossen, nicht stören, anonym | Manuell |
FOSDoorOccupancy |
Hält, wer im Raum ist | Manuell |
FOSDoorBell |
Die Episode „jemand steht vor der Tür” | Nur Events |
FOSDoorDisplay |
Alle Texte, Symbole und Anzeigen | Keine |
FOSDoorPortal |
Ein Durchgang, wahlweise reserviert | Keine |
Nur FOSDoorLock entscheidet etwas. Alles andere liest mit. Genau diese Trennung
erlaubt dir, ein zweites Panel, eine entfernte Anzeige oder dein eigenes Verhalten
hinzuzufügen, ohne den Zustand anzufassen: Registriere dich mit FOSRegister, stelle eine
öffentliche parameterlose Methode bereit, und du wirst bei jeder Änderung benachrichtigt.
| Quelle | Event an die Registrierten |
|---|---|
FOSDoorLock |
FOSApplyDoorState, bei einer Ablehnung FOSApplyDoorDenied |
FOSDoorOccupancy |
FOSApplyOccupancy |
FOSDoorBell |
FOSApplyBell |
Entsprechungen zu den Einstellungen der 1.0
Abschnitt betitelt „Entsprechungen zu den Einstellungen der 1.0“| 1.0 | 2.0 |
|---|---|
| VIP Room | Locked on start gesetzt und Unlock when empty nicht gesetzt |
| Lock For All | Anyone can lock |
| Delay Seconds | Display seconds, an der Klingel |
| Anonym Length | entfallen — die Maske ist ein Text deiner Wahl, für alle derselbe |
| Room Name | an der Anzeige |
VIPChecker |
FOSAccessList, aus dem Pack FOS Access |
HideSystem |
FOS UI Culling |
TeleportLDS |
FOSDoorPortal, auf Basis von FOS Teleport |
Die Tür übersetzen
Abschnitt betitelt „Die Tür übersetzen“Die Oberfläche des Editors ist bereits übersetzt. Die Texte, die in deiner Welt erscheinen, gehören dir und gehören in die Tabelle von FOS Localization:
| Schlüssel | Enthält |
|---|---|
lockdoor.ring.who |
Die Klingelmeldung. Muss den Platzhalter {player} enthalten. |
lockdoor.list.empty |
Statt der Liste gezeigt, wenn der Raum leer ist. |
lockdoor.denied.notAllowed |
Für jemanden ohne Schlüssel. |
lockdoor.denied.loading |
Solange die Zugriffsliste noch nicht angekommen ist. |
Lässt du den Sprachmanager leer, werden die an der Anzeige hinterlegten Ersatztexte unverändert verwendet. Das Pack funktioniert ohne verdrahtetes FOS Localization — es spricht dann eben nur eine Sprache.
Wie die Netzwerkseite arbeitet
Abschnitt betitelt „Wie die Netzwerkseite arbeitet“Der Zustand reist ausschließlich über synchronisierte Variablen. Ein Klick übernimmt
den Besitz, schreibt, serialisiert und wendet lokal an; jeder andere Client erhält
OnDeserialization und wendet dasselbe an. Nichts wird aus einem Event rekonstruiert, wer
später beitritt, bekommt also den vollständigen Zustand, ohne dass ihm etwas wiederholt
wird.
Anfragen laufen in die Gegenrichtung: Ein Client fragt den Besitzer, und der prüft, wer wirklich ruft, bevor er handelt. Niemand kann im Namen einer anderen Person hinzufügen, entfernen oder klingeln.
Die Klingel synchronisiert gar nichts. Klingeln ist ein Ereignis, kein Zustand.
Was dies nicht ist
Abschnitt betitelt „Was dies nicht ist“Der anonyme Modus ist kosmetisch. Er verbirgt Namen auf dem Panel, für alle gleich — aber jeder Client kann ohnehin alle in der Instanz auflisten, vor einer entschlossenen Person hält er also nichts geheim. Es ist eine Höflichkeit, kein Schutz.
Der Zugang wird auf dem Client der Person selbst entschieden, wie alles in Udon. Ein veränderter Client kann antworten, was er will. Dies räumt eine Welt auf; es bewacht sie nicht.
Beide Grenzen sind real, und für keine gibt es in Udon eine Lösung. Plane deine Welt mit diesem Wissen, statt es umgehen zu wollen.
Credits
Abschnitt betitelt „Credits“French Oasis Studio SAS — contact@frenchoasis.studio
