Tirar uma foto é uma maneira perfeita de comemorar uma ótima experiência. O módulo de desenvolvedor PhotoBooth é uma ferramenta de preparo de fotos fácil de usar que permite que os jogadores atinjam um cargo único com um plano de fundo que representa sua experiência.
Uso do módulo
Instalação
Para usar o módulo PhotoBooth em uma experiência:
Na aba Exibir, abra a Caixa de ferramentas e selecione a aba Mercado.
Verifique se a ordenação de Modelos está selecionada e, em seguida, clique no botão Exibir Tudo para Categorias.
Encontre e clique no painel DEV MODULES
Localize o módulo Cabine de fotos e clique nele, ou arraste-o e solte-o em uma visualização 3D.
Na janela do Explorador, mova o modelo PhotoBooth inteiro para o ServerScriptService. Ao executar a experiência, o módulo será distribuído para vários serviços e começará a ser executado.
Posicionando a cabine
O módulo vem com um modelo PhotoBooth que você pode posicionar no mundo 3D. Esse modelo é o objeto com o qual os jogadores interagirão para configurar uma foto.
Localize a malha PhotoBooth dentro da pasta Espaço de trabalho da pasta principal do módulo.
Mova-a para a hierarquia mais alta do Espaço de trabalho e posicione-a onde desejar.
Configuração
O módulo é pré-configurado para funcionar na maioria dos casos de uso, mas pode ser facilmente personalizado por meio da função configurar. Por exemplo, para alterar a mensagem padrão na parte inferior da foto:
Em StarterPlayerScripts, crie um novo Class. LocalScript e renomeie-o para ConfigurePhotoBooth.
Cole o seguinte código dentro do script novo.
LocalScript - ConfigurePhotoBoothlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))PhotoBooth.configure({frameMessage = "First Photo Booth Capture!",})
Conexão com eventos
Toda vez que a cabine de fotos exibir uma nova tela para um cliente local, um evento correspondente será acionado. Esses eventos podem ser conectados em um Class. 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 interface gráfica
Por padrão, a cabine de fotos esconde todos os Class. ScreenGui|ScreenGuis e Class. CoreGui|CoreGuis quando a foto é tirada. Se você quiser substituir esse comportamento de ocultação automática e decidir programaticamente quais interfaces gráficas 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 = {}
-- 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.
Referência de API
Funções
configurar
configure(config:table):nil
Substitui as opções de configuração padrão por meio das chaves-valor na tabela config. Esta função só poder ser chamada de um Class. LocalScript.
Aparência
Chave | Descrição | Padrão |
---|---|---|
frameMessage | Mensagem que é mostrada na parte inferior da foto. Sua duração pode ser controlada por meio da propriedade fadeUiDelay. | "Use seu dispositivo para capturar a tela e compartilhar!" |
fadeUiDelay | Tempo para mostrar a mensagem do quadro antes de desaparecer, em segundos. Defina como um número negativo para que nunca desapareça. | 3 |
closeButtonImage | Imagem a ser usada para o botão de fechar a foto, colocada sobre a imagem closeButtonBackgroundImage. | "rbxassetid://7027440823" |
closeButtonBackgroundImage | Imagem de fundo a ser usada para o botão de fechar a foto. | "rbxassetid://7027440891" |
cameraLandscapePosition | Distância da câmera da cabine de fotos, na frente e para cima do personagem, ao tirar uma foto no modo paisagem (Datatype. Vector2). | (5, 2) |
cameraPortraitPosition | Distância da câmera da cabine de fotos, na frente e para cima do personagem, ao tirar uma foto no modo retrato (Datatype. Vector2). | (10, 1) |
countdownFont | Fonte a ser usada para os números na contagem regressiva (Enum. Font). | GothamBlack |
countdownTextColor | Cor dos números na contagem regressiva (Datatype. 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 ativo da animação que o personagem faz na foto, pausada em seu quadro inicial. | "rbxassetid://6899663224" |
filterImage | Imagem a ser aplicada sobre a foto como um filtro. Se nil, um filtro padrão que ofusca as bordas da imagem será usado. | nil |
Comportamento
Chave | Descrição | Padrão |
---|---|---|
maxActivationDistance | Distância máxima, em rebites, que o personagem de um jogador pode estar da cabine de fotos para que o aviso apareça. | 10 |
countdownBeepSound | ID de ativo do Class. Sound a ser reproduzido para cada número mostrado na contagem regressiva. | "rbxassetid://7743999789" |
countdownFlashSound | ID de ativo para o Class. Sound a ser reproduzido quando o efeito de flash for mostrado. | "rbxassetid://7744000850" |
countdownSeconds | Número de segundos para a contagem regressiva. | 3 |
Outros
Chave | Descrição | Padrão |
---|---|---|
photoboothTag | Marcador usado por Class. CollectionService para encontrar todas as “cabines” no local. | "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
Substitui os fundos padrão fornecidos pela cabine de fotos. As imagens de fundo devem estar na proporção de 16:9 (1024×768) para uma experiência ideal e seus IDs de ativo devem ser incluídos na matriz de fundos. 1–4 (inclusivos) fundos podem ser fornecidos.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))PhotoBooth.setBackgrounds({"rbxassetid://7018713114","rbxassetid://950538356",})
Eventos
countdownStarted
countdownStarted(): RBXScriptSignal
É acionado quando a contagem regressiva começa. O evento só pode ser conectado a um Class. 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
É acionado quando a impressão é mostrada ao usuário. O evento só pode ser conectado a um Class. 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
É acionado quando a impressão é fechada e o botão da câmera é exibido novamente. O evento só pode ser conectado a um Class. LocalScript.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.promptShown:Connect(function()
print("The camera prompt is showing")
end)
Retornos de chamada
hideOtherGuis
hideOtherGuis(callback:function)
Esse retorno de chamada é executado imediatamente antes de a impressão ser exibida, permitindo que você desabilite Class. ScreenGui|ScreenGuis por completo ou elementos de dentro antes que a impressão seja mostrada. As interfaces gráficas usadas pela cabine de fotos têm o atributo ShowInPhotoBooth definido como true. Consulte Visibilidade da interface gráfica para obter detalhes e códigos de exemplo.
showOtherGuis
showOtherGuis(callback:function)
Esse retorno de chamada é exibido após o fechamento da impressão, permitindo que você reative Class. ScreenGui|ScreenGuis por completo ou elementos de dentro. As interfaces gráficas usadas pela cabine de fotos têm o atributo ShowInPhotoBooth definido como true. Consulte Visibilidade da interface gráfica para obter detalhes e códigos de exemplo.