Zum Inhalt springen

FOS Access

Version 1.0.1 · benötigt FOS Essentials Core 1.0.0 oder neuer

Beantwortet eine einzige Frage — hat diese Person den Schlüssel? — und lässt alles in deiner Welt sie stellen. Benötigt FOS Essentials Core 1.0.0.


Komponente Aufgabe
FOSAccessList Hält die Quellen und die Antwort. Eine je Liste.
FOSAccessGate Zeigt oder verbirgt Objekte je nach dieser Antwort. Eine je gefilterter Stelle.

Menü: Add Component > FOS Essentials > Access > ...


  1. Erstelle ein leeres GameObject und füge FOS Essentials > Access > Access List hinzu.
  2. Fülle mindestens eine Quelle (siehe unten).
  3. Richte alles, was die Antwort braucht, auf diese Komponente aus — ein FOSAccessGate, eine Tür, dein eigenes Verhalten.

Mehrere unabhängige Listen — VIP, Team, Crew einer Veranstaltung — bedeuten mehrere FOSAccessList-Komponenten, jede auf ihrem eigenen Objekt. Eine Liste ist ein Ding, keine Kategorie innerhalb einer Komponente.


Sie sind kumulativ: eine einzige, die Zugang gewährt, genügt.

Quelle Änderbar ohne neu zu veröffentlichen Antwortet sofort
Liste im Inspektor nein ja
Entfernte Liste (URL) ja nein — es ist ein Download
VRChat-Produkt ja nein — sie kommt mit dem Kauf-Callback
Master der Instanz — ja

Üblich ist die Kombination der ersten beiden: die zwei oder drei Vertrauenspersonen, die mit der Welt ausgeliefert werden, plus eine Liste, die du später ohne Unity bearbeitest.

Ein Anzeigename pro Zeile. Leere Zeilen werden ignoriert, ebenso Zeilen, die mit # beginnen — so kommentierst du die Datei:

# Team
Frankk Darko
# Gäste der Januar-Veranstaltung
Some Player

Die #-Regel gilt nur für die entfernte Liste. Im Inspektor ist ein Name ein Name — ein Anzeigename darf durchaus mit einer Raute beginnen.

Der Inspektor bietet Import from a file und Export to a file, beide im obigen Format. Eine Inspektor-Liste lässt sich also unverändert exportieren und hosten, und eine bereits veröffentlichte Datei zurück ins Prefab holen. Ein Name pro Zeile ergibt eine einzige Spalte — deshalb gibt es hier kein CSV, es gäbe nichts zu trennen.


Das Laden, und warum ein „nein” nicht immer ein Nein ist

Abschnitt betitelt „Das Laden, und warum ein „nein” nicht immer ein Nein ist“

Während eine entfernte Liste lädt, kann die Liste nicht ehrlich antworten. FOSIsResolved() sagt dir, ob die Antwort endgültig ist:

  • ein ja ist es immer — Quellen fügen nur Personen hinzu, keine kann zurücknehmen, was eine andere gewährt hat; wer in der Inspektor-Liste steht, bleibt drin;
  • ein nein ist erst endgültig, wenn nichts mehr unterwegs ist.

Eine Oberfläche, die ablehnt, sollte beides unterscheiden. „Du stehst nicht auf der Liste” und „die Liste ist noch nicht angekommen” behebt man nicht gleich — und wer weder das eine noch das andere hört, schließt schlicht, dass die Schaltfläche kaputt ist.


Aufruf Antwort
FOSIsAllowed() Hat die lokale Person den Schlüssel?
FOSIsResolved() Ist diese Antwort endgültig?
FOSState() StateLoading, StateReady oder StateFailed
FOSRegister(behaviour) Bei jeder Änderung der Antwort FOSApplyAccess erhalten

Ein Verhalten, das sich registriert, muss ein öffentliches, parameterloses FOSApplyAccess() bereitstellen.


FOSAccessGate sitzt auf dem, was es filtert, statt es zentral aufzulisten: Die Regel lebt dort, wo das Objekt lebt, du siehst sie beim Auswählen des Objekts, und sie folgt ihm, wenn du es verschiebst.

Es rührt nie sein eigenes GameObject an. Das ist keine Nettigkeit — ein Udon-Verhalten auf einem deaktivierten Objekt läuft nicht mehr, es würde also nie die Antwort erhalten, die es wieder einschalten soll. Es bliebe dunkel bis zum Neustart der Welt, ohne Fehler und ohne Erklärung. Ohne ausdrückliche Ziele steuert es stattdessen seine direkten Kinder: Setze das Gate auf ein leeres Objekt und parke darunter, was gefiltert werden soll.


Es räumt eine Welt auf. Es schützt sie nicht.

Die Antwort wird auf dem Client der Person selbst berechnet, ein veränderter Client kann also antworten, was er will, und eine über eine öffentliche URL ausgelieferte Liste ist für jeden lesbar. Udon bietet nichts Besseres — es gibt keine serverseitige Prüfung, auf die man sich berufen könnte.

Schreibe in eine Liste nichts außer Anzeigenamen, und lass dies nie über etwas entscheiden, dessen Erreichen durch eine entschlossene Person dich stören würde.


French Oasis Studio SAS — contact@frenchoasis.studio