Tomar una foto es una manera perfecta de conmemorar una gran experiencia. El PhotoBooth módulo de desarrollador es una herramienta de escenificación de fotos fácil de usar que permite a los jugadores posar de manera única con un fondo que representa su experiencia.
Uso del módulo
Instalación
Para usar el módulo PhotoBooth en una experiencia:
Desde el menú Ventana de Studio o la barra de herramientas de la pestaña Inicio, abre el Toolbox y selecciona la pestaña Tienda de Creadores.

Asegúrate de que se haya seleccionado la clasificación de Modelos, luego haz clic en el botón Ver Todos para Categorías.

Localiza y haz clic en el mosaico Paquetes.
Localiza el módulo Cabina de Fotos y haz clic en él, o arrástralo y suéltalo en la vista 3D.

En la ventana Explorer, mueve todo el modelo PhotoBooth a ReplicatedStorage. Al ejecutar la experiencia, el módulo comenzará a funcionar.
Posicionar la cabina
El módulo viene con un modelo de PhotoBooth que puedes posicionar en el mundo 3D. Este modelo es con el que los jugadores interactuarán para configurar una foto.
Localiza el modelo PhotoBooth dentro de la carpeta Workspace de la carpeta principal del módulo.

Muévelo a la jerarquía de Workspace de nivel superior y posiciónalo donde desees.

Configuración
El módulo está preconfigurado para funcionar en la mayoría de los casos de uso, pero se puede personalizar fácilmente a través de la función configure. Por ejemplo, para cambiar el mensaje predeterminado en la parte inferior de la foto:
En StarterPlayerScripts, crea un nuevo LocalScript y renómbralo a ConfigurePhotoBooth.

Pega el siguiente código en el nuevo script.
LocalScript - ConfigurePhotoBoothlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage.PhotoBooth)PhotoBooth.configure({frameMessage = "¡Primer Captura en la Cabina de Fotos!",})
Conectar a eventos
Cada vez que la cabina de fotos muestra una nueva pantalla a un cliente local, se activa un evento correspondiente. Estos eventos se pueden conectar en un LocalScript para que puedas responder con tu propia lógica personalizada.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.countdownStarted:Connect(function()
print("La cuenta regresiva ha comenzado")
end)
PhotoBooth.printoutShown:Connect(function()
print("La impresión se está mostrando")
end)
PhotoBooth.promptShown:Connect(function()
print("El mensaje de la cámara se está mostrando")
end)
Visibilidad de la GUI
Por defecto, la cabina de fotos oculta todas los ScreenGuis y CoreGuis cuando se está realizando una foto. Si deseas anular este comportamiento de ocultación automática y decidir programáticamente qué GUIs deben permanecer visibles, incluye los callbacks hideOtherGuis y showOtherGuis y responde con tu propia lógica personalizada.
LocalScript
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- Crea una GUI de pantalla que no será oculta
local specialGuiInstance = Instance.new("ScreenGui")
-- Dibuja la GUI de pantalla por encima de la GUI de la cabina de fotos
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Establece un atributo en la GUI de pantalla para evitar que se oculte
specialGuiInstance:SetAttribute("ShowInPhotoBooth", true)
-- Añade una etiqueta de texto a la GUI
local specialLabel = Instance.new("TextLabel")
specialLabel.Size = UDim2.fromScale(1, 0.1)
specialLabel.Text = "Permanece visible al tomar una foto"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
PhotoBooth.hideOtherGuis(function()
-- Oculta todas las GUIs de pantalla definidas por el desarrollador excepto aquellas marcadas con atributo
local instances = playerGui:GetChildren()
for _, instance in instances do
if instance:IsA("ScreenGui") and not instance:GetAttribute("ShowInPhotoBooth") and instance.Enabled then
instance.Enabled = false
table.insert(hiddenInstances, instance)
end
end
-- Oculta GUIs centrales específicas
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
PhotoBooth.showOtherGuis(function()
-- Muestra todas las GUIs de pantalla definidas por el desarrollador que fueron ocultadas
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Muestra GUIs centrales específicas que fueron ocultadas
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
Referencia de API
Funciones
configure
configure(config: table)
Sobrescribe las opciones de configuración predeterminadas a través de las siguientes claves/valores en la tabla config. Esta función solo se puede llamar desde un LocalScript.
| Clave | Descripción | Predeterminado |
|---|---|---|
| frameMessage | Mensaje que se muestra en la parte inferior de la foto. Su duración se puede controlar a través de la propiedad fadeUiDelay. | "¡Usa tu dispositivo para tomar una captura de pantalla y compartir!" |
| fadeUiDelay | Tiempo que se muestra el mensaje del marco antes de desvanecerse, en segundos. Establecer en un número negativo para no desvanecer nunca. | 3 |
| closeButtonImage | Imagen a usar para el botón de cierre de la foto, colocada sobre la imagen de fondo del botón de cierre closeButtonBackgroundImage. | "rbxassetid://7027440823" |
| closeButtonBackgroundImage | Imagen de fondo a usar para el botón de cierre de la foto. | "rbxassetid://7027440891" |
| cameraLandscapePosition | Distancia de la cámara de la cabina de fotos, frente y hacia arriba desde el personaje, al tomar una foto en modo paisaje (Vector2). | (5, 2) |
| cameraPortraitPosition | Distancia de la cámara de la cabina de fotos, frente y hacia arriba desde el personaje, al tomar una foto en modo retrato (Vector2). | (10, 1) |
| countdownFont | Fuente a usar para los números en la cuenta regresiva (Enum.Font). | GothamBlack |
| countdownTextColor | Color de los números en la cuenta regresiva (Color3). | [255, 255, 255] |
| printoutCharacterPosition | Posición del personaje en la pantalla cuando se está mostrando la impresión (UDim2). | (0.5, 0, 0.5, 0) |
| printoutCharacterSize | Cantidad de espacio en pantalla que ocupa el personaje en la impresión (UDim2). | (1, 0, 1, 0) |
| characterAnimation | ID del activo de la animación que realiza el personaje en la foto, en pausa en su cuadro inicial. | "rbxassetid://6899663224" |
| filterImage | Imagen que se aplicará sobre la foto como un filtro. Si nil, se usará un filtro por defecto que oscurece los bordes de la imagen. | nil |
LocalScript - ConfigurePhotoBoothlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage.PhotoBooth)PhotoBooth.configure({frameMessage = "¡Qué pose tan genial!",fadeUiDelay = 5,maxActivationDistance = 5,printoutCharacterSize = UDim2.fromScale(1.5, 1.5),})
setBackgrounds
setBackgrounds(backgrounds: table)
Sobrescribe los fondos predeterminados proporcionados por la cabina de fotos. Las imágenes de fondo deben tener una relación de aspecto de 16:9 (1024×576) para una experiencia óptima y sus IDs de activos deben estar incluidos en la matriz de fondos. Se pueden proporcionar de 1 a 4 fondos (inclusive).
LocalScriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage.PhotoBooth)PhotoBooth.setBackgrounds({"rbxassetid://7018713114","rbxassetid://950538356",})
Eventos
countdownStarted
Se inicia cuando la cuenta regresiva comienza. Este evento solo se puede conectar en un LocalScript.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.countdownStarted:Connect(function()
print("La cuenta regresiva ha comenzado")
end)
printoutShown
Se inicia cuando la impresión se muestra al usuario. Este evento solo se puede conectar en un LocalScript.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.printoutShown:Connect(function()
print("La impresión se está mostrando")
end)
promptShown
Se inicia cuando la impresión se cierra y el botón de la cámara se muestra de nuevo. Este evento solo se puede conectar en un LocalScript.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.promptShown:Connect(function()
print("El mensaje de la cámara se está mostrando")
end)
Callbacks
hideOtherGuis
hideOtherGuis(callback: function)
Este callback se ejecuta inmediatamente antes de que se muestre la impresión, permitiéndote desactivar toda la ScreenGuis o elementos dentro de ellas antes de que se muestre la impresión. Las GUIs utilizadas por la cabina de fotos tienen el atributo ShowInPhotoBooth establecido en true. Consulta Visibilidad de GUI para obtener detalles y código de muestra.
showOtherGuis
showOtherGuis(callback: function)
Este callback se ejecuta después de que se ha cerrado la impresión, permitiéndote volver a habilitar toda la ScreenGuis o elementos dentro de ellas. Las GUIs utilizadas por la cabina de fotos tienen el atributo ShowInPhotoBooth establecido en true. Consulta Visibilidad de GUI para obtener detalles y código de muestra.