Cabine de Fotografia

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

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:

  1. Da aba Ver, abra a Caixa de Ferramentas e selecione a aba Loja do Criador .

    Toolbox toggle button in Studio
  2. Certifique-se de que a classificação Modelos está selecionada, então clique no botão Ver Todos para Categorias .

  3. Localize e clique no tijolo Dev Modules .

  4. Localize o módulo Cabine de Fotos e clique nele, ou arraste-e-solte-o para a ver3D.

  5. 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.

  1. Localize a Cabine de Fotos mesh dentro da pasta Espaço de Trabalho do diretório principal do módulo.

  2. 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:

  1. Em StarterPlayerScripts , crie um novo LocalScript e renomeie-o para Configurar PhotoBooth .

  2. Cole o seguinte código no novo script.

    LocalScript - Configurar Estande de Fotos

    local 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 .

ChaveDescriçãoPadrão
frameMessageMensagem 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!”
fadeUiDelayHora de mostrar a mensagem de quadro antes de desaparecer, em segundos. Defina para um número negativo para nunca desaparecer.3
closeButtonImageImagem para usar no botão de fechar foto, colocado sobre a imagem closeButtonBackgroundImage.“rbxassetid://7027440823”
closeButtonBackgroundImageImagem de fundo para usar no botão de fechar foto.“rbxassetid://7027440891”
cameraLandscapePositionDistância da Câmerada cabine de fotos, na frente e para cima do personagem, ao tirar uma foto no modo paisagem ( Vector2 ).(5, 2)
cameraPortraitPositionDistâ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)
countdownFontFonte para usar para os números na contagem regressiva ( Enum.Font ).GothamBlack
countdownTextColorCor dos números na contagem regressiva ( Color3 ).[255, 255, 255]
printoutCharacterPositionPosição do personagem na tela quando a impressão estiver sendo mostrada ( UDim2 ).(0.5, 0, 0.5, 0)
printoutCharacterSizeQuantidade de espaço na tela que o personagem ocupa na impressão ( UDim2 ).(1, 0, 1, 0)
characterAnimationID de recurso da animação que o personagem toma na foto, pausada em seu quadro inicial.“rbxassetid://6899663224”
filterImageImagem 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.