Tomar una foto es una forma perfecta de conmemorar una gran experiencia. El módulo de desarrolladores de PhotoBooth es una herramienta de puesta en escena de fotos fácil de usar que le permite a los jugadores hacer una pose única con un fondo que representa su experiencia.
Uso del módulo
Instalación
Sigue estos pasos para usar el módulo PhotoBooth en una experiencia:
En la pestaña Ver, abre la Caja de herramientas y selecciona la pestaña Mercado.
Asegúrate de que la clasificación de Modelos esté seleccionada y, a continuación, haz clic en el botón Ver todo para las Categorías.
Busca y haz clic en el mosaico MÓDULOS DE DESARROLLO.
Busca el módulo Cabina de fotos y haz clic en él o arrástralo y suéltalo en la vista 3D.
En la ventana del Explorador, mueve todo el modelo de PhotoBooth a ServerScriptService. Al ejecutar la experiencia, el módulo se distribuirá a varios servicios y comenzará a ejecutarse.
Posicionar la cabina
El módulo viene con un modelo de PhotoBooth que puedes posicionar en el mundo 3D. Este modelo es con lo que los jugadores interactuarán para configurar una foto.
Busca la malla PhotoBooth dentro de la carpeta Workspace de la carpeta principal del módulo.
Muévela a la jerarquía de Workspace de nivel superior y colócala donde desees.
Configuración
El módulo está preconfigurado para funcionar en la mayoría de los casos de uso, pero puede personalizarse fácilmente mediante la función de configuración. Por ejemplo, para cambiar el mensaje predeterminado en la parte inferior de la foto:
En StarterPlayerScripts, crea un nuevo LocalScripty cámbiale el nombre a ConfigureMerchBooth.
Pega el siguiente código en el script nuevo.
LocalScript - ConfigurePhotoBoothlocal ReplicatedStorage = game: GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))PhotoBooth.configure({frameMessage = "First Photo Booth Capture!",})
Conexión a eventos
Cada vez que la cabina de fotos muestra una pantalla nueva a un cliente local, se dispara 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:WaitForChild("PhotoBooth"))
PhotoBooth.countdownStarted:Connect(function()
print("The countdown has started")
end)
PhotoBooth.printoutShown:Connect(function()
print("The printout is showing")
end)
PhotoBooth.promptShown:Connect(function()
print("The camera prompt is showing")
end)
Visibilidad de la GUI
Por defecto, la cabina de fotos oculta todo ScreenGuis y CoreGuis cuando una foto se incorpora. Si deseas anular este comportamiento de ocultación automática y decidir cuáles GUI deberían permanecer visibles, incluye las retrollamadas 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:WaitForChild("PhotoBooth"))
local player = Players. LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- Create a screen GUI that will not be hidden
local specialGuiInstance = Instance.new("ScreenGui")
-- Draw the screen GUI above the photo booth GUI
specialGuiInstance. DisplayOrder = 1
specialGuiInstance. Parent = playerGui
-- Set attribute on screen GUI to prevent hiding
specialGuiInstance: SetAttribute("ShowInPhotoBooth", true)
-- Add text label to the GUI
local specialLabel = Instance.new("TextLabel")
specialLabel. Size = UDim2.fromScale(1, 0.1)
specialLabel. Text = "Remains visible when taking a photo"
specialLabel. Font = Enum. Font.GothamMedium
specialLabel. TextSize = 24
specialLabel. Parent = specialGuiInstance
PhotoBooth.hideOtherGuis(function()
-- Hide all developer-defined screen GUIs except those marked with attribute
local instances = playerGui:GetChildren()
for _, instance in pairs(instances) do
if instance: IsA("ScreenGui") and not instance: GetAttribute("ShowInPhotoBooth") and instance. Enabled then
instance. Enabled = false
table.insert(hiddenInstances, instance)
end
end
-- Hide specific core GUIs
StarterGui: SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
PhotoBooth.showOtherGuis(function()
-- Show all developer-defined screen GUIs that were hidden
for _, instance in pairs(hiddenInstances) do
instance. Enabled = true
end
hiddenInstances = {}
-- Show specific core GUIs that were hidden
StarterGui: SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
Referencia API
Funciones
configure
configure(config:table):nil
Reemplaza las opciones de configuración predeterminadas a través de las siguientes claves o valores en la tabla config. A esta función solo se puede acceder desde un LocalScript.
Apariencia
Clave | Descripción | Predeterminado |
---|---|---|
frameMessage | Mensaje que se muestra en la parte inferior de la foto. Su duración se puede controlar por medio de la propiedad fadeUiDelay. | "Use your device to take a screenshot and share!" |
fadeUiDelay | Es hora de mostrar el mensaje del marco antes de que se desvanezca, en segundos. Establece un número negativo para que nunca se desvanezca. | 3 |
closeButtonImage | Imagen a usar para el botón de la foto de cierre, colocada sobre la imagen closeButtonBackgroundImage. | "rbxassetid://7027440823" |
closeButtonBackgroundImage | Imagen de fondo que se va a usar para el botón de la foto de cierre. | "rbxassetid://7027440891" |
cameraLandscapePosition | Distancia de la cámara de la cabina de fotos, delante y hacia arriba desde el personaje, al tomar una foto en el modo horizontal (Vector2). | (5, 2) |
cameraPortraitPosition | Distancia de la cámara de la cabina de fotos, delante y hacia arriba desde el personaje, al tomar una foto en el modo vertical (Vector2). | (10, 1) |
countdownFont | Fuente que se va 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 la impresión se muestra (UDim2). | (0.5, 0, 0.5, 0) |
printoutCharacterSize | Cantidad de espacio en la pantalla que el personaje ocupa en la impresión (UDim2). | (1, 0, 1, 0) |
characterAnimation | Identificación del recurso de la animación que el personaje toma en la foto, pausada en su marco inicial. | "rbxassetid://6899663224" |
filterImage | Imagen que se va a aplicar sobre la foto como filtro. Si nil, se usará un filtro predeterminado que oscurece los bordes de la imagen. | nil |
Comportamiento
Clave | Descripción | Predeterminado |
---|---|---|
maxActivationDistance | Distancia máxima, en studs, que el personaje de un jugador puede estar desde la cabina de fotos para que aparezca el mensaje. | 10 |
countdownBeepSound | Identificación del recurso del Sound que se va a jugar para cada número que se muestra en la cuenta regresiva. | "rbxassetid://7743999789" |
countdownFlashSound | Identificación del recurso del Sound para jugar cuando el efecto flash se muestre. | "rbxassetid://7744000850" |
countdownSeconds | Número de segundos que se debe contar regresivamente. | 3 |
Otros
Clave | Descripción | Predeterminado |
---|---|---|
photoboothTag | Etiqueta usada por CollectionService para encontrar todas las "cabinas" en el lugar. | "PhotoBooth" |
LocalScript - ConfigurePhotoBooth
local ReplicatedStorage = game: GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))PhotoBooth.configure({frameMessage = "What a cool pose!",fadeUiDelay = 5,maxActivationDistance = 5,printoutCharacterSize = UDim2.fromScale(1.5, 1.5),})
setBackgrounds
setBackgrounds(backgrounds:table):nil
Reemplaza 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 × 768) para una experiencia óptima y sus identificaciones de recursos deben incluirse en la matriz de fondos. Se pueden proporcionar fondos de 1 a 4 (ambos incluidos).
LocalScript
local ReplicatedStorage = game: GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))PhotoBooth.setBackgrounds({"rbxassetid://7018713114","rbxassetid://950538356",})
Eventos
countdownStarted
countdownStarted(): RBXScriptSignal
Se dispara cuando la cuenta regresiva comienza. Este evento solo se puede conectar en un LocalScript.
LocalScript
local ReplicatedStorage = game: GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.countdownStarted:Connect(function()
print("The countdown has started")
end)
printoutShown
printoutShown(): RBXScriptSignal
Se dispara 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:WaitForChild("PhotoBooth"))
PhotoBooth.printoutShown:Connect(function()
print("The printout is showing")
end)
promptShown
promptShown(): RBXScriptSignal
Se dispara 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:WaitForChild("PhotoBooth"))
PhotoBooth.promptShown:Connect(function()
print("The camera prompt is showing")
end)
Callbacks
hideOtherGuis
hideOtherGuis(callback:function)
Esta callback se ejecuta inmediatamente antes de que la impresión se muestre, lo que te permite desactivar el ScreenGuis o los elementos completos dentro de ellos antes de que la impresión se muestre. Las GUI usadas por la cabina de fotos tienen el atributo ShowInPhotoBooth establecido en true. Consulta Visibilidad de la GUI para obtener los detalles y el código de ejemplo.
showOtherGuis
showOtherGuis(callback:function)
Esta callback se ejecuta después de que la impresión se ha cerrado, lo que te permite reactivar el ScreenGuis o los elementos completos dentro de ellos. Las GUI usadas por la cabina de fotos tienen el atributo ShowInPhotoBooth establecido en true. Consulta Visibilidad de la GUI para obtener los detalles y el código de ejemplo.