Ir al contenido

FOS Access

Versión 1.0.1 · requiere FOS Essentials Core 1.0.0 o posterior

Responde a una sola pregunta — ¿tiene este jugador la llave? — y permite que cualquier cosa de tu mundo la formule. Requiere FOS Essentials Core 1.0.0.


Componente Función
FOSAccessList Contiene las fuentes y la respuesta. Uno por lista.
FOSAccessGate Muestra u oculta objetos según esa respuesta. Uno por sitio filtrado.

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


  1. Crea un GameObject vacío y añade FOS Essentials > Access > Access List.
  2. Rellena al menos una fuente (más abajo).
  3. Apunta a ese componente todo lo que necesite la respuesta: un FOSAccessGate, una puerta, tu propio comportamiento.

Varias listas independientes — VIP, staff, equipo de un evento — significan varios componentes FOSAccessList, cada uno en su objeto. Una lista es una cosa, no una categoría dentro de un componente.


Son acumulativas: basta con que una sola conceda el acceso.

Fuente Se cambia sin republicar Responde al instante
Lista en el inspector no sí
Lista remota (URL) sí no — es una descarga
Producto de VRChat sí no — llega con la llamada de compra
Master de la instancia — sí

Lo habitual es combinar las dos primeras: las dos o tres personas de confianza que van con el mundo, más una lista que puedes editar después sin volver a abrir Unity.

Un nombre visible por línea. Las líneas vacías se ignoran, igual que las que empiezan por #, que es como se anota el archivo:

# staff
Frankk Darko
# invitados del evento de enero
Some Player

La regla del # vale solo para la lista remota. En el inspector un nombre es un nombre: un nombre visible puede empezar perfectamente por almohadilla.

El inspector tiene Import from a file y Export to a file, ambos con el formato de arriba. Así, una lista del inspector puede exportarse y alojarse tal cual, y un archivo ya publicado puede recuperarse dentro del prefab. Un nombre por línea es una sola columna: por eso aquí no hay CSV, no habría nada que separar.


La carga, y por qué un «no» no siempre es un no

Sección titulada «La carga, y por qué un «no» no siempre es un no»

Mientras una lista remota se descarga, la lista no puede responder con honestidad. FOSIsResolved() te dice si la respuesta es definitiva:

  • un sí siempre lo es — las fuentes solo añaden personas, ninguna puede retirar lo que otra concedió, así que quien ya figura en la lista del inspector está dentro para siempre;
  • un no solo lo es cuando ya no queda nada en camino.

Una interfaz que deniega debería distinguir ambos casos. «No estás en la lista» y «la lista aún no ha llegado» no se arreglan igual, y un jugador al que no se le dice ninguna de las dos cosas concluye simplemente que el botón está roto.


Llamada Respuesta
FOSIsAllowed() ¿Tiene la llave el jugador local?
FOSIsResolved() ¿Es definitiva esa respuesta?
FOSState() StateLoading, StateReady o StateFailed
FOSRegister(behaviour) Recibir FOSApplyAccess cada vez que cambie la respuesta

Un comportamiento que se registra debe exponer un FOSApplyAccess() público y sin parámetros.


FOSAccessGate se coloca sobre lo que filtra en lugar de listarlo centralmente: la regla vive donde vive el objeto, la ves al seleccionarlo, y lo acompaña si lo mueves.

Nunca toca su propio GameObject. No es un detalle de cortesía: un comportamiento de Udon en un objeto desactivado deja de ejecutarse, así que jamás recibiría la respuesta que debía volver a encenderlo. Se quedaría apagado hasta reiniciar el mundo, sin error y sin explicación. Si no le das objetivos explícitos, gobierna a sus hijos directos: coloca la puerta en un objeto vacío y aparca debajo lo que deba filtrarse.


Ordena un mundo. No lo protege.

La respuesta se calcula en el cliente del propio jugador, así que un cliente modificado puede responder lo que quiera, y una lista remota servida por una URL pública la puede leer cualquiera. Udon no ofrece nada mejor: no existe ninguna comprobación en servidor a la que recurrir.

No pongas en una lista más que nombres visibles, y nunca dejes que esto decida algo cuyo acceso por parte de un visitante decidido te molestaría.


French Oasis Studio SAS — contact@frenchoasis.studio