Scattare una foto è un modo perfetto per commemorare un grande gioco. Il PhotoBooth modulo per sviluppatori è uno strumento di allestimento fotografico facile da usare che consente ai giocatori di posare in modo unico con uno sfondo che rappresenta la loro esperienza.
Utilizzo del modulo
Installazione
Per utilizzare il modulo PhotoBooth in un gioco:
Dal menu Finestra di Studio o dalla barra degli strumenti della scheda Home, apri il Toolbox e seleziona la scheda Creator Store.

Assicurati che sia selezionato l'ordinamento Modelli, quindi fai clic sul pulsante Vedi Tutti per Categorie.

Individua e fai clic sulla tessera Pacchetti.
Individua il modulo Photo Booth e fai clic su di esso, oppure trascinalo e rilascialo nella vista 3D.

Nella finestra Esplora, sposta l'intero modello PhotoBooth in ReplicatedStorage. Una volta avviato il gioco, il modulo inizierà a funzionare.
Posizionare la cabina
Il modulo viene fornito con un modello PhotoBooth che puoi posizionare nel mondo 3D. Questo modello è quello con cui i giocatori interagiranno per impostare una foto.
Individua il mesh PhotoBooth all'interno della cartella Workspace della cartella principale del modulo.

Spostalo nella gerarchia Workspace di livello superiore e posizionalo dove desiderato.

Configurazione
Il modulo è preconfigurato per funzionare nella maggior parte dei casi d'uso, ma può essere facilmente personalizzato tramite la funzione configure. Ad esempio, per cambiare il messaggio predefinito in fondo alla foto:
In StarterPlayerScripts, crea un nuovo LocalScript e rinominalo in ConfigurePhotoBooth.

Incolla il seguente codice nel nuovo script.
LocalScript - ConfigurePhotoBoothlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage.PhotoBooth)PhotoBooth.configure({frameMessage = "Primo scatto della cabina fotografica!",})
Collegarsi agli eventi
Ogni volta che la cabina fotografica mostra un nuovo schermo a un client locale, viene attivato un evento corrispondente. Questi eventi possono essere collegati in un LocalScript in modo da poter rispondere con la propria logica personalizzata.
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.countdownStarted:Connect(function()
print("Il conto alla rovescia è iniziato")
end)
PhotoBooth.printoutShown:Connect(function()
print("La stampa è visibile")
end)
PhotoBooth.promptShown:Connect(function()
print("Il prompt della fotocamera è visibile")
end)Visibilità della GUI
Per impostazione predefinita, la cabina fotografica nasconde tutte le ScreenGuis e CoreGuis quando una foto è in fase di allestimento. Se desideri sovrascrivere questo comportamento di auto-nascita e decidere programmaticamente quali GUI devono rimanere visibili, includi i callback hideOtherGuis e showOtherGuis e rispondi con la tua logica personalizzata.
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- Crea una GUI di schermo che non verrà nascosta
local specialGuiInstance = Instance.new("ScreenGui")
-- Disegna la GUI di schermo sopra la GUI della cabina fotografica
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Imposta un attributo sulla GUI di schermo per prevenire la nascita
specialGuiInstance:SetAttribute("ShowInPhotoBooth", true)
-- Aggiungi un'etichetta di testo alla GUI
local specialLabel = Instance.new("TextLabel")
specialLabel.Size = UDim2.fromScale(1, 0.1)
specialLabel.Text = "Rimane visibile durante la foto"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
PhotoBooth.hideOtherGuis(function()
-- Nascondi tutte le GUI di schermo definite dallo sviluppatore tranne quelle contrassegnate con attributo
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
-- Nascondi GUI core specifiche
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
PhotoBooth.showOtherGuis(function()
-- Mostra tutte le GUI di schermo definite dallo sviluppatore che erano nascoste
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Mostra GUI core specifiche che erano nascoste
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)Riferimento API
Funzioni
configure
configure(config: table)
Sovrascrive le opzioni di configurazione predefinite tramite le seguenti chiavi/valori nella tabella config. Questa funzione può essere chiamata solo da un LocalScript.
| Chiave | Descrizione | Predefinito |
|---|---|---|
| frameMessage | Messaggio mostrato in fondo alla foto. La sua durata può essere controllata tramite la proprietà fadeUiDelay. | "Usa il tuo dispositivo per scattare uno screenshot e condividerlo!" |
| fadeUiDelay | Tempo per mostrare il messaggio del frame prima che svanisca, in secondi. Imposta a un numero negativo per non far mai svanire. | 3 |
| closeButtonImage | Immagine da utilizzare per il pulsante di chiusura della foto, posizionata sopra l'immagine di sfondo del pulsante di chiusura. | "rbxassetid://7027440823" |
| closeButtonBackgroundImage | Immagine di sfondo da utilizzare per il pulsante di chiusura della foto. | "rbxassetid://7027440891" |
| cameraLandscapePosition | Distanza della fotocamera della cabina fotografica, davanti e sopra il personaggio, quando si scatta una foto in modalità paesaggio (Vector2). | (5, 2) |
| cameraPortraitPosition | Distanza della fotocamera della cabina fotografica, davanti e sopra il personaggio, quando si scatta una foto in modalità ritratto (Vector2). | (10, 1) |
| countdownFont | Font da utilizzare per i numeri nel conto alla rovescia (Enum.Font). | GothamBlack |
| countdownTextColor | Colore dei numeri nel conto alla rovescia (Color3). | [255, 255, 255] |
| printoutCharacterPosition | Posizione del personaggio sullo schermo quando la stampa è visibile (UDim2). | (0.5, 0, 0.5, 0) |
| printoutCharacterSize | Quantità di spazio sullo schermo che il personaggio occupa nella stampa (UDim2). | (1, 0, 1, 0) |
| characterAnimation | ID dell'asset dell'animazione che il personaggio esegue nella foto, in pausa al suo fotogramma iniziale. | "rbxassetid://6899663224" |
| filterImage | Immagine da applicare sulla foto come filtro. Se nil, verrà utilizzato un filtro predefinito che scurisce i bordi dell'immagine. | nil |
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.configure({
frameMessage = "Che posa fantastica!",
fadeUiDelay = 5,
maxActivationDistance = 5,
printoutCharacterSize = UDim2.fromScale(1.5, 1.5),
})setBackgrounds
setBackgrounds(backgrounds: table)
Sovrascrive gli sfondi predefiniti forniti dalla cabina fotografica. Le immagini di sfondo dovrebbero avere un rapporto di aspetto di 16:9 (1024×576) per un'esperienza ottimale e i loro ID asset dovrebbero essere inclusi nell'array degli sfondi. Possono essere forniti da 1 a 4 sfondi (inclusi).
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.setBackgrounds({
"rbxassetid://7018713114",
"rbxassetid://950538356",
})Eventi
countdownStarted
Viene attivato quando inizia il conto alla rovescia. Questo evento può essere collegato solo in un LocalScript.
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.countdownStarted:Connect(function()
print("Il conto alla rovescia è iniziato")
end)printoutShown
Viene attivato quando la stampa è mostrata all'utente. Questo evento può essere collegato solo in un LocalScript.
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.printoutShown:Connect(function()
print("La stampa è visibile")
end)promptShown
Viene attivato quando la stampa è chiusa e il pulsante della fotocamera è di nuovo visibile. Questo evento può essere collegato solo in un LocalScript.
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.promptShown:Connect(function()
print("Il prompt della fotocamera è visibile")
end)Callback
hideOtherGuis
hideOtherGuis(callback: function)
Questo callback viene eseguito immediatamente prima che la stampa venga visualizzata, consentendoti di disabilitare intere ScreenGuis o elementi al loro interno prima che la stampa venga mostrata. Le GUI utilizzate dalla cabina fotografica hanno l'attributo ShowInPhotoBooth impostato su true. Vedi Visibilità della GUI per dettagli e codice di esempio.
showOtherGuis
showOtherGuis(callback: function)
Questo callback viene eseguito dopo che la stampa è stata chiusa, consentendoti di riabilitare intere ScreenGuis o elementi al loro interno. Le GUI utilizzate dalla cabina fotografica hanno l'attributo ShowInPhotoBooth impostato su true. Vedi Visibilità della GUI per dettagli e codice di esempio.