Cabina foto

Fare una foto è un modo perfetto per commemorare una grande esperienza. Il modulo dello sviluppatore di PhotoBooth è uno strumento di messa in scena fotografica facile da usare, che consente ai giocatori di fare una foto unica con uno sfondo che rappresenta la loro esperienza completata.

Utilizzo del modulo

Installazione

Per utilizzare il modulo PhotoBooth in un'esperienza:

  1. Dalla scheda Visualizza, aprire il Pannello degli strumenti e selezionare la scheda Marketplace.

    attiva il pulsante degli Strumenti in Studio
  2. Assicurarsi che la selezione dei modelli sia selezionata, quindi fare clic sul pulsante Vedi tutto per le Categorie.

  3. Individuare e fare clic sulla piastrella DEV MODULES.

  4. Individuare il modulo della cabina foto e fare clic su di esso, oppure trascinarlo e lasciarlo nella visualizzazione 3D.

  5. Nella finestra Explorer, spostare l'intero modello PhotoBooth in ServerScriptService. Dopo aver avviato l'esperienza, il modulo si distribuirà a vari servizi e inizierà a funzionare.

Posizionare la cabina

Il modulo è dotato di un modello PhotoBoot che è possibile posizionare nel mondo 3D. I giocatori interagiranno con questo modello per impostare una foto.

  1. Individuare la rete PhotoBooth all'interno della cartella Spazio di lavoro della cartella principale del modulo.

  2. Spostarla nel livello alto della gerarchia dello Spazio di lavoro e posizionarla dove si desidera.

Configurazione

Il modulo è preconfigurato per funzionare nella maggior parte dei casi di utilizzo, ma può essere facilmente personalizzato attraverso la funzione di configurazione. Ad esempio, per modificare il Messaggio di default in fondo alla foto:

  1. In StarterPlayerScripts, crea un nuovo LocalScript e rinominalo in ConfigurePhotoBooth.

  2. Incolla il seguente codice nel nuovo Script.

    LocalScript - ConfigurePhotoBooth

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
    PhotoBooth.configure({
    frameMessage = "First Photo Booth Capture!",
    })

Collegarsi agli eventi

Ogni volta che la cabina foto visualizza una nuova schermata per un client locale, un evento corrispondente viene lanciato. Questi eventi possono essere collegati in un LocalScript in modo da consentirti di rispondere con la tua logica personalizzata.

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)

Visibilità Interfaccia grafica utente

Per impostazione predefinita, la cabina foto nasconde tutto ScreenGuis e CoreGuis quando una foto è in corso. Se vuoi sovrascrivere questo comportamento di auto-hiding e decidere programmaticamente se le GUI debbano rimanere visibili, includi la nascondiAltreGui e i comandi di richiamo mostraAltreGui e rispondi con la tua logica personalizzata.

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)

Riferimento API

Funzioni

Configurare

configure(config:table):nil

Sovrascrive la configurazione predefinita attraverso le seguenti chiavi/valori nella configtabella. Questa funzione può essere chiamata solo da un LocalScript.

Aspetto

ChiaveDescrizionePredefinito
frameMessageMessaggio che viene visualizzato in fondo alla foto. La sua durata può essere controllata tramite la proprietà fadeUiDelay."Usa il tuo dispositivo per fare uno screenshot e condividere!"
fadeUiDelayTempo di visualizzazione del messaggio di cornice prima che svanisca in pochi secondi. Impostare un numero negativo in modo che non svanisca mai.3
closeButtonImageImmagine da utilizzare per Chiudere il pulsante della foto, posta sopra l'immagine closeButtonBackgroundImage."rbxassetid://7027440823"
closeButtonBackgroundImageImmagine di sfondo da utilizzare per il pulsante di chiusura della foto."rbxassetid://7027440891"
cameraLandscapePositionDistanza della Telecamera della cabina foto, davanti e verso l'alto rispetto al personaggio, quando si scatta una foto in modalità Orizzontale o verticale (Vector2).(5, 2)
cameraPortraitPositionDistanza della Telecamera della cabina foto, davanti e verso l'alto rispetto al personaggio, quando si scatta una foto in modalità Orizzontale o verticale ().re, quando si prende una foto portrait mode (Vector2).(10, 1)
countdownFontFont da utilizzare per i numeri nel conto alla rovescia (Enum.Font).GothamBlack
countdownTextColorColore dei numeri nel conto alla rovescia (Color3).[255, 255, 255]
printoutCharacterPositionPosizione del personaggio sulla schermata quando la stampa viene visualizzata (UDim2).(0.5, 0, 0.5, -0)
printoutCharacterSizeQuantità di spazio sullo schermo che il personaggio occupa nella stampa (UDim2).(1, 0, 1, -0)
characterAnimationrisorsa ID dell'animazione che il personaggio prende nella foto, interrotta alla sua cornice di partenza."rbxassetid://6899663224"
filterImageImmagine da applicare sulla foto come Filtro. Se nil, verrà utilizzato un Filtro predefinito che scurisce i bordi dell'immagine.nil

Comportamento

ChiaveDescrizionePredefinito
maxActivationDistanzeDistanza massima, all'interno degli indicatori, a cui il personaggio di un giocatore può posizionarsi all'interno della cabina foto affinché il prompt venga visualizzato.10
countdownBeepSoundID risorsa del Sound da attivare per ogni numero visualizzato nel conto alla rovescia.Questo"rbxassetid://7743999789"`
countdownFlashSoundID risorsa del Sound da attivare quando l'effetto flash viene visualizzato."rbxassetid://7744000850"
countdownsecondsNumero di secondi del conto alla rovescia.3

Altro

ChiaveDescrizionePredefinito
photoboothTagTag utilizzata da CollectionService per trovare tutte le "cabine" nel posto."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(background:table):nil

Oltrepassa gli sfondi predefiniti forniti dalla cabina foto. Le immagini di sfondo dovrebbero rispettare delle proporzioni di 16:9 (1024×768) per un'esperienza ottimale e la Risorsa ID dovrebbe essere inclusa nella gamma degli sfondi. Gli sfondi da 1–4 (inclusi) possono essere forniti.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.setBackgrounds({
"rbxassetid://7018713114",
"rbxassetid://950538356",
})

Eventi

countdownStarted

countdownStarted(): RBXScriptSignal

Viene lanciato quando parte il conto alla rovescia. Questo evento può essere collegato solo in 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

Viene lanciato quando la stampa viene visualizzata dall'utente. Questo evento può essere collegato solo in 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

Viene lanciato quando la stampa è chiusa e la Telecamera si apre di nuovo. Questo evento può essere collegato solo in 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)

Richiami

hideOtherGuis

hideOtherGuis(callback:funzione)

Il comando Richiama viene eseguito immediatamente prima che la stampa venga visualizzata, permettendoti di disattivare l'intero ScreenGuis o gli elementi all'interno prima di procedere alla stampa. Le GUI usate dalla cabina foto hanno l'attributo ShowInPhotoBooth impostato su true. Vedere Visibilità Interfaccia grafica utente per dettagli e codice campione.

showOtherGuis

showOtherGuis(callback:funzione)

Il comando Richiama viene eseguito dopo che la stampa è stata chiusa, permettendoti di riabilitare l'intero ScreenGuis o gli elementi all'interno. Le GUI usate dalla cabina foto hanno l'attributo ShowInPhotoBooth impostato su true. Vedere Visibilità Interfaccia grafica utente per dettagli e codice campione.