Skip to content

Entorno

UI Labs crea un entorno virtual para cada historia, lo que reemplaza la función require, el global script y la tabla _G.

Esto es necesario para permitir el aislamiento (sandboxing) y evitar el almacenamiento en caché de las funciones require. Además, UI Labs inyecta valores y funciones adicionales que pueden ser útiles dentro del entorno.

Dado que la historia se ejecuta dentro del mismo entorno, puedes usar cualquiera de estas utilidades desde cualquier parte de la historia. El Paquete de Utilidades proporcionará una forma de acceder a estas variables.

Environment.IsStory

Environment.IsStory( ):boolean

Devuelve true si la historia actual se está ejecutando dentro de UI Labs

Environment.Unmount

Environment.Unmount( )

Desmonta la historia. Esto es útil cuando la historia no se debe continuar ejecutando.

Por defecto, es una función vacía en entornos fuera de las historias

Environment.Reload

Environment.Reload( )

Recarga la historia. Puedes usar esto si quieres forzar una recarga cuando algo externo haya cambiado, o como una alternativa a Environment.Unmount.

DANGER

Tiene el potencial de causar un bucle infinito.

Por defecto, es una función vacía en entornos fuera de las historias

Environment.CreateSnapshot

Environment.CreateSnapshot(name?:string)

Hace lo mismo que el botón Guardar Versiones / Create Snapshot. Es útil para clonar la interfaz automáticamente. Se puede proporcionar un argumento adicional name para el ScreenGui creado.

Por defecto, es una función vacía en entornos fuera de las historias

Environment.SetStoryHolder

Environment.SetStoryHolder(target?:Instance)

Cambia lo que selecciona el botón Ver en el Explorador / View On Explorer cuando se hace clic. Es útil cuando la historia no usa el Frame de destino proporcionado (por ejemplo, usando React Portals), o cuando la historia no es una interfaz de usuario.

Llamar a esta función sin un valor restablecerá el contenedor de la historia al Frame de destino.

Por defecto, es una función vacía en entornos fuera de las historias

Environment.GetJanitor

Environment.GetJanitor( ):Janitor

Proporciona un objeto de tipo Janitor que se destruye cuando la historia se desmonta. Esto es útil para limpiar recursos sin necesidad de acceder manualmente a las funciones de limpieza.

Regresa nil en entornos fuera de las historias

Environment.InputListener

Environment.InputListener:InputSignals

Te proporciona un input listener. Esto es útil porque UserInputService no funcionará dentro de Plugin Widgets.

El tipo del listener es:

ts
type InputSignals = {
   InputBegan: UserInputService.InputBegan;
   InputChanged: UserInputService.InputChanged;
   InputEnded: UserInputService.InputEnded;
   MouseMoved: Signal<(mousePos: Vector2)>;
}

Regresa nil en entornos fuera de las historias

Environment.UserInput

Environment.UserInput:UserInputService

Es igual a Environment.InputListener, pero la diferencia es que este usa el tipo de UserInputService y lo utiliza por defecto. Además, recurrirá a UserInputService para cualquier método que falte.

Regresa UserInputService en entornos fuera de las historias

Environment.EnvironmentUID

Environment.EnvironmentUID:string

Regresa el GUID del entorno. Este cambia cada vez que la historia es recargada.

Regresa nil en entornos fuera de las historias

Environment.PreviewUID

Environment.PreviewUID:string

Regresa el GUID de la previsualizacion. Cambia cada vez que la historia se monta, pero permanece igual cuando es recargada.

Regresa nil en entornos fuera de las historias

Environment.OriginalG

Environment.OriginalG:_G

Contiene la tabla original _G. Puede ser usado para salir del entorno aislado.

Regresa la tabla _G en entornos fuera de las historias

Environment.Plugin

Environment.Plugin:Plugin

Regresa la variable global plugin. Esto es útil para poder acceder a la API de plugin.

Regresa nil en entornos fuera de las historias

Environment.PluginWidget

Environment.PluginWidget:DockWidgetPluginGui

Regresa donde el plugin está montado. Esto es útil porque los Sounds solo pueden ser reproducidos dentro de un DockWidgetPluginGui en el Edit Mode (Modo de Edición).

ADVERTENCIA

Solo debes ubicar instancias directamente dentro del widget del plugin. Manipular elementos del plugin de UI Labs puede romper el plugin.

Regresa nil en entornos fuera de las historias

Resumen
lua
local UILabs = require(ReplicatedStorage.UILabs)
local Environment = UILabs.Environment

print(Environment.IsStory())

---- [[ Variables ]] ----
print(Environment.EnvironmentUID)
print(Environment.PreviewUID)
print(Environment.OriginalG)
print(Environment.PluginWidget)


---- [[ Funciones ]] ----
Environment.Reload()
Environment.Unmount()
Environment.CreateSnapshot("MySnapshot")
Environment.SetStoryHolder(game.Workspace.Baseplate)


---- [[ Janitor ]] ----
local janitor = Environment.GetJanitor()
janitor:Add(Instance.new("Part"))
janitor:Add(function()
   print("Cleanup")
end)


---- [[ InputListener ]] ----
local inputListener = Environment.InputListener

inputListener.InputBegan:Connect(function(input, gameProcessed)
   print(input.UserInputType)
end)
inputListener.InputEnded:Connect(function(input, gameProcessed)
   print(input.UserInputType)
end)
inputListener.InputChanged:Connect(function(input, gameProcessed)
   print(input.UserInputType)
end)
inputListener.MouseMoved:Connect(function(mousePos)
   print(mousePos)
end)
ts
import { Environment } from "@rbxts/ui-labs";

print(Environment.IsStory());

/* ------- Variables ------ */
print(Environment.EnvironmentUID);
print(Environment.PreviewUID);
print(Environment.OriginalG);
print(Environment.PluginWidget);

/* ------- Funciones ------ */
Environment.Reload();
Environment.Unmount();
Environment.CreateSnapshot("MySnapshot");
Environment.SetStoryHolder(game.Workspace.Baseplate);

/* ------- Janitor ------ */
const janitor = Environment.GetJanitor();
janitor.Add(new Instance("Part"));
janitor.Add(() => {
	print("Cleanup");
});

/* ------- InputListener ------ */
const inputListener = Environment.InputListener;

inputListener.InputBegan.Connect((input, gameProcessed) => {
	print(input.UserInputType);
});
inputListener.InputEnded.Connect((input, gameProcessed) => {
	print(input.UserInputType);
});
inputListener.InputChanged.Connect((input, gameProcessed) => {
	print(input.UserInputType);
});
inputListener.MouseMoved.Connect((mousePos) => {
	print(mousePos);
});