Fazer uma foto é uma maneira perfeita de comemorar uma grande experiência.O módulo de desenvolvedor Fotobooth, fácil de usar, é uma ferramenta de estágio de fotos que permite que os jogadores dêem uma posa única com um plano de fundo que representa sua experiência.
Uso do módulo
Instalação
Para usar o módulo Fotobooth em uma experiência:
Certifique-se de que a classificação Modelos está selecionada, então clique no botão Ver Todos para Categorias .
Localize e clique no tijolo Dev Modules .
Localize o módulo Cabine de Fotos e clique nele, ou arraste-e-solte-o para a ver3D.
Na janela Explorer, mova todo o modelo Fotobooth para Serviço de Script de Servidor .Ao executar a experiência, o módulo se distribuirá a vários serviços e começará a funcionar.
Localize o estande
O módulo vem com um modelo Fotobooth que você pode posicionar no mundo 3D.Este modelo é com o qual os jogadores interagirão para configurar uma foto.
Localize a Cabine de Fotos mesh dentro da pasta Espaço de Trabalho do diretório principal do módulo.
Mova-o para a hierarquia de nível superior Espaço de Trabalho e posicione-o onde desejado.
Configuração
O módulo é pré-configurado para funcionar na maioria dos casos de uso, mas pode ser facilmente personalizado através da função configurar.Por exemplo, para alterar a mensagem padrão na parte inferior da foto:
Em StarterPlayerScripts , crie um novo LocalScript e renomeie-o para Configurar PhotoBooth .
Cole o seguinte código no novo script.
LocalScript - Configurar Estande de Fotoslocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))PhotoBooth.configure({frameMessage = "First Photo Booth Capture!",})
Conectar a eventos
Toda vez que a cabine de fotos exibe uma nova tela para um cliente local, um evento correspondente é disparado.Esses eventos podem ser conectados em um LocalScript para que você possa responder com sua própria 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)
Visibilidade da GUI
Por padrão, o estande de fotos esconde todos os ScreenGuis e CoreGuis quando uma foto é estagiada.Se você quiser anular esse comportamento de ocultamento automático e decidir programaticamente quais GUIs devem permanecer visíveis, inclua os retornos de chamada hideOtherGuis e showOtherGuis e responda com sua própria 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 = {}
-- Crie uma GUI de tela que não será oculta
local specialGuiInstance = Instance.new("ScreenGui")
-- Desenhe a GUI da tela acima da Interface gráfica do usuáriodo estande de fotos
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Defina o atributo na GUI da tela para impedir a ocultação
specialGuiInstance:SetAttribute("ShowInPhotoBooth", true)
-- Adicionar rótulo de texto à Interface gráfica do usuário
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()
-- Ocultar todas as interfaces de tela definidas pelo desenvolvedor, exceto as marcadas com 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
-- Esconder interfaces gráficas específicas do núcleo
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
PhotoBooth.showOtherGuis(function()
-- Mostrar todas as interfaces de tela definidas pelo desenvolvedor que foram ocultadas
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Mostrar GUIs específicas do núcleo que foram ocultas
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
Referência da API
Funções
configurar
configurar(config: table )
Substitui as opções de configuração padrão através das seguintes chaves/valores na tabela config.Essa função só pode ser chamada a partir de um LocalScript .
Chave | Descrição | Padrão |
---|---|---|
frameMessage | Mensagem que é mostrada na parte inferior da foto. Sua duração pode ser controlada através da propriedade fadeUiDelay. | “Use seu dispositivo para fazer uma captura de tela e compartilhar!” |
fadeUiDelay | Hora de mostrar a mensagem de quadro antes de desaparecer, em segundos. Defina para um número negativo para nunca desaparecer. | 3 |
closeButtonImage | Imagem para usar no botão de fechar foto, colocado sobre a imagem closeButtonBackgroundImage. | “rbxassetid://7027440823” |
closeButtonBackgroundImage | Imagem de fundo para usar no botão de fechar foto. | “rbxassetid://7027440891” |
cameraLandscapePosition | Distância da Câmerada cabine de fotos, na frente e para cima do personagem, ao tirar uma foto no modo paisagem ( Vector2 ). | (5, 2) |
cameraPortraitPosition | Distância da Câmerada cabine de fotos, na frente e para cima do personagem, ao tirar uma foto no modo de retrato ( Vector2 ). | (10, 1) |
countdownFont | Fonte para usar para os números na contagem regressiva ( Enum.Font ). | GothamBlack |
countdownTextColor | Cor dos números na contagem regressiva ( Color3 ). | [255, 255, 255] |
printoutCharacterPosition | Posição do personagem na tela quando a impressão estiver sendo mostrada ( UDim2 ). | (0.5, 0, 0.5, 0) |
printoutCharacterSize | Quantidade de espaço na tela que o personagem ocupa na impressão ( UDim2 ). | (1, 0, 1, 0) |
characterAnimation | ID de recurso da animação que o personagem toma na foto, pausada em seu quadro inicial. | “rbxassetid://6899663224” |
filterImage | Imagem para aplicar sobre a foto como um filtro. Se nil , um filtro padrão que escurece os cantos da imagem será usado. | nil |
LocalScript - Configurar Estande de Fotos
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 )
Substitui os fundos padrão fornecidos pela cabine de fotos.Imagens de fundo devem ter proporção de aspecto de 16:9 (1024×768) para uma experiência otimizada e seus IDs de ativos devem ser incluídos no matriz / listade fundos.1–4 (inclusivo) fundos de plano podem ser fornecidos.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))PhotoBooth.setBackgrounds({"rbxassetid://7018713114","rbxassetid://950538356",})
Eventos
countdownComeçou
Dispara quando a contagem regressiva começa. Este evento só pode ser conectado em um LocalScript .
LocalScript' hightlight='5-7
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.countdownStarted:Connect(function()
print("The countdown has started")
end)
prints mostrados
Dispara quando a impressão é mostrada ao usuário. Este evento só pode ser conectado em um LocalScript .
LocalScript' hightlight='5-7
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.printoutShown:Connect(function()
print("The printout is showing")
end)
promptMostrado
Incêndios quando a impressão é fechada e o botão da câmera está mostrando novamente. Este evento só pode ser conectado em um LocalScript .
LocalScript' hightlight='5-7
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.promptShown:Connect(function()
print("The camera prompt is showing")
end)
Chamadas de volta
esconderOtherGuis
hideOtherGuis(retorno de chamada: function )
Este retorno de chamada é executado imediatamente antes da impressão ser exibida, permitindo que você desative todo o ScreenGuis ou elementos dentro deles antes que a impressão seja exibida.As interfaces gráficas usadas pela cabine de fotos têm o atributo Mostrar na Cabine de Fotos definido como verdadeiro .Veja Visibilidade da GUI para detalhes e código de amostra.
mostrarOutrosGui
mostrarOtherGuis(retorno de chamada: function )
Este retorno de chamada ocorre depois que a impressão foi fechada, permitindo que você reative todo o ScreenGuis ou elementos dentro deles.As interfaces gráficas usadas pela cabine de fotos têm o atributo Mostrar na Cabine de Fotos definido como verdadeiro .Veja Visibilidade da GUI para detalhes e código de amostra.