Scattare una foto è un modo perfetto per commemorare una grande esperienza. Il modulo Cabina Fotografica per sviluppatori è uno strumento di staging 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 Cabina Fotografica in un'esperienza:
Dal menu Finestra di Studio o dalla barra degli strumenti della scheda Home, apri il Toolbox e seleziona la scheda Negozio Creatori.

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

Individua e fai clic sulla scheda Pacchetti.
Trova il modulo Cabina Fotografica e fai clic su di esso, oppure trascinalo e rilascialo nella vista 3D.

Nella finestra Esplora, sposta l'intero modello Cabina Fotografica in ReplicatedStorage. Al momento dell'esecuzione dell'esperienza, il modulo inizierà a funzionare.
Posizionare la cabina
Il modulo include un modello di Cabina Fotografica che puoi posizionare nel mondo 3D. Questo modello è quello con cui i giocatori interagiranno per impostare una foto.
Individua il mesh Cabina Fotografica 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 modificare il messaggio predefinito nella parte inferiore della foto:
In StarterPlayerScripts, crea un nuovo LocalScript e rinominalo in ConfiguraCabinaFotografica.

Incolla il seguente codice nel nuovo script.
LocalScript - ConfiguraCabinaFotograficalocal ReplicatedStorage = game:GetService("ReplicatedStorage")local CabinaFotografica = require(ReplicatedStorage.CabinaFotografica)CabinaFotografica.configure({frameMessage = "Prima cattura della cabina fotografica!",})
Collegare agli eventi
Ogni volta che la cabina fotografica visualizza 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.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local CabinaFotografica = require(ReplicatedStorage.CabinaFotografica)
CabinaFotografica.countdownStarted:Connect(function()
print("Il conteggio è iniziato")
end)
CabinaFotografica.printoutShown:Connect(function()
print("La stampa è visibile")
end)
CabinaFotografica.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 staging. Se desideri sovrascrivere questo comportamento di nascondimento automatico e decidere programmaticamente quali GUI dovrebbero rimanere visibili, includi i callback hideOtherGuis e showOtherGuis e rispondi con la tua logica personalizzata.
LocalScript
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local CabinaFotografica = require(ReplicatedStorage.CabinaFotografica)
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- Crea una screen GUI che non verrà nascosta
local specialGuiInstance = Instance.new("ScreenGui")
-- Disegna la screen GUI sopra la GUI della cabina fotografica
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Imposta un'attributo sulla screen GUI 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 quando si scatta una foto"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
CabinaFotografica.hideOtherGuis(function()
-- Nascondi tutte le screen GUI definite dallo sviluppatore eccetto 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)
CabinaFotografica.showOtherGuis(function()
-- Mostra tutte le screen GUI definite dallo sviluppatore che erano nascoste
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Mostra le 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 attraverso le seguenti chiavi/valori nella tabella config. Questa funzione può essere chiamata solo da un LocalScript.
| Chiave | Descrizione | Predefinito |
|---|---|---|
| frameMessage | Messaggio mostrato alla parte inferiore della foto. La sua durata può essere controllata tramite la proprietà fadeUiDelay. | "Usa il tuo dispositivo per scattare uno screenshot e condividere!" |
| fadeUiDelay | Tempo in secondi per mostrare il messaggio del frame prima che svanisca. Imposta un numero negativo per non far mai svanire. | 3 |
| closeButtonImage | Immagine da utilizzare per il pulsante di chiusura della foto, posizionata sopra l'immagine closeButtonBackgroundImage. | "rbxassetid://7027440823" |
| closeButtonBackgroundImage | Immagine di sfondo da utilizzare per il pulsante di chiusura della foto. | "rbxassetid://7027440891" |
| cameraLandscapePosition | Distanza della fotocamera della cabina fotografica, di fronte e sollevata dal personaggio, quando si scatta una foto in modalità orizzontale (Vector2). | (5, 2) |
| cameraPortraitPosition | Distanza della fotocamera della cabina fotografica, di fronte e sollevata dal personaggio, quando si scatta una foto in modalità verticale (Vector2). | (10, 1) |
| countdownFont | Carattere da utilizzare per i numeri nel countdown (Enum.Font). | GothamBlack |
| countdownTextColor | Colore dei numeri nel countdown (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 occupata dal personaggio 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 |
LocalScript - ConfiguraCabinaFotograficalocal ReplicatedStorage = game:GetService("ReplicatedStorage")local CabinaFotografica = require(ReplicatedStorage.CabinaFotografica)CabinaFotografica.configure({frameMessage = "Che posa cool!",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 devono essere inclusi nell'array degli sfondi. Possono essere forniti da 1 a 4 sfondi (inclusi).
LocalScriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local CabinaFotografica = require(ReplicatedStorage.CabinaFotografica)CabinaFotografica.setBackgrounds({"rbxassetid://7018713114","rbxassetid://950538356",})
Eventi
countdownStarted
Viene attivato quando inizia il countdown. Questo evento può essere collegato solo in un LocalScript.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local CabinaFotografica = require(ReplicatedStorage.CabinaFotografica)
CabinaFotografica.countdownStarted:Connect(function()
print("Il conteggio è iniziato")
end)
printoutShown
Viene attivato quando la stampa è mostrata all'utente. Questo evento può essere collegato solo in un LocalScript.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local CabinaFotografica = require(ReplicatedStorage.CabinaFotografica)
CabinaFotografica.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.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local CabinaFotografica = require(ReplicatedStorage.CabinaFotografica)
CabinaFotografica.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, permettendoti di disabilitare intere ScreenGuis o elementi all’interno di esse 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, permettendoti di riabilitare intere ScreenGuis o elementi all’interno di esse. Le GUI utilizzate dalla cabina fotografica hanno l'attributo ShowInPhotoBooth impostato su true. Vedi Visibilità della GUI per dettagli e codice di esempio.