Stand photo

Prendre une photo est un moyen idéal de se remémorer une expérience exceptionnelle. Le module développeur PhotoBooth est un outil de mise en scène photo facile à utiliser qui permet aux joueurs de prendre une pose unique avec un arrière-plan représentant leur expérience.

Utilisation du module

Installation

Pour utiliser le module PhotoBooth dans une expérience :

  1. Dans l'onglet Voir, ouvrez la Boîte à outils et sélectionnez l'onglet Marketplace.

    Bouton activer/désactiver la Boîte à outils dans Studio
  2. Assurez-vous que le filtre Modèles est sélectionné, puis cliquez sur le bouton Voir tout pour afficher les catégories.

  3. Localisez et cliquez sur la vignette MODULES DEV.

  4. Localisez le module Cabine Photo et cliquez dessus, ou faites-le glisser dans la vue 3D.

  5. Dans la fenêtre Explorateur, déplacez l'intégralité du modèle PhotoBooth dans ServerScriptService. Lors de l'exécution de l'expérience, le module se distribuera lui-même vers divers services et commencera à s'exécuter.

Positionner la cabine

Le module est livré avec un modèle PhotoBooth que vous pouvez placer dans le monde 3D. Ce modèle est le modèle avec lequel les joueurs interagiront pour configurer une photo.

  1. Localisez le maillage PhotoBooth dans le dossier Espace de travail du dossier principal du module.

  2. Déplacez-le dans la hiérarchie de l'Espace de travail du premier niveau et positionnez-le où vous le souhaitez.

Paramétrage

Le module est préconfiguré pour fonctionner dans la plupart des cas d'utilisation, mais il peut être facilement modifier grâce à la fonction configurer. Par exemple, pour modifier le message par défaut au bas de la photo :

  1. Dans StarterPlayerScripts, créez un nouveau LocalScript et renommez-le ConfigurePhotoBooth.

  2. Collez le code suivant dans le nouveau script.

    LocalScript - ConfigurePhotoBooth

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

Se connecter aux événements

Chaque fois que la cabine photo affiche un nouvel écran pour un client local, un événement correspondant est déclenché. Ces événements peuvent être liés dans un LocalScript afin que vous puissiez répondre avec votre propre logique.

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é de la GUI

Par défaut, la cabine photo masque tous les ScreenGuis et CoreGuis lorsqu'une photo est mise en scène. Si vous souhaitez remplacer ce comportement de masquage automatique et décider via un programme des GUI qui doivent rester visibles, incluez les rappels hideOtherGuis et showOtherGuis et répondez avec votre propre logique personnalisée.

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)

Référence API

Fonctions

configurer

configure(config:table):nil

Remplace les options de configuration par défaut par le biais des clés/valeurs suivantes dans le tableau config. Cette fonction peut uniquement être appelée à partir d'un LocalScript.

Apparence

CléDescriptionPar défaut
frameMessageMessage affiché au bas de la photo. Sa durée peut être commandée via la propriété fadeUiDelay."Utilisez votre appareil pour prendre une capture d'écran et la partager !"
fadeUiDelayTemps d'affichage du message de trame avant qu'il ne disparaisse après quelques secondes. Définissez un nombre négatif pour qu'il ne disparaisse jamais.3
closeButtonImageImage à utiliser pour le bouton fermer la photo, placé au-dessus de l'image closeButtonBackgroundImage."rbxassetid://7027440823"
closeButtonBackgroundImageImage d'arrière-plan à utiliser pour le bouton fermer la photo."rbxassetid://7027440891"
cameraLandscapePositionDistance de l'appareil de la cabine photo, en face et au-dessus du personnage, lorsqu'une photo est prise en mode paysage (Vector2).(5, 2)
cameraPortraitPositionDistance de l'appareil de la cabine photo, en face et au-dessus du personnage, lorsqu'une photo est prise en mode portrait (Vector2).(10, 1)
countdownFontPolice à utiliser pour les nombres dans le compte à rebours (Enum.Font).GothamBlack
countdownTextColorCouleur des nombres dans le compte à rebours (Color3).[255, 255, 255]
printoutCharacterPositionPosition du personnage sur l'écran quand l'impression s'affiche (UDim2).(0.5, 0, 0.5, 0)
printoutCharacterSizeEspace que prend le personnage à l'écran dans l'impression (UDim2).(1, 0, 1, 0)
characterAnimationID de l'élément d'animation choisi par le personnage dans la photo, mis en pause au niveau de son cadre de départ."rbxassetid://6899663224"
filterImageImage à appliquer sur la photo comme un filtre. Si nil, un filtre par défaut qui assombrit les bords de l'image sera utilisé.nil

Comportement

CléDescriptionPar défaut
maxActivationDistanceDistance maximale, en studs, entre le personnage d'un joueur et la cabine photo pour que l'invite apparaisse.10
countdownBeepSoundID de l'élément du Sound à lancer pour chaque nombre affiché dans le compte à rebours."rbxassetid://7743999789"
countdownFlashSoundID de l'élément pour le Sound à lancer quand l'effet flash est utilisé."rbxassetid://7744000850"
countdownSecondsDurée du compte à rebours en secondes.3

Autres

CléDescriptionPar défaut
photoboothTagTag utilisé par CollectionService pour trouver tous les « stands » dans l'emplacement."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

Remplace les arrière-plans par défaut fournis par la cabine photo. Les images d'arrière-plan doivent avoir un ratio d'aspect de 16:9 (1024×768) pour une expérience optimale et leurs ID d'élément doivent être inclus dans la matrice d'arrière-plans. Il est possible de fournir des arrière-plans de 1 à 4 (inclus).

LocalScript

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

Événements

countdownStarted

countdownStarted(): RBXScriptSignal

Se déclenche lorsque le compte à rebours commence. Cet événement peut uniquement être lié dans 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

Se déclenche lorsque l'impression est affichée à l'utilisateur. Cet événement peut uniquement être lié dans 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

Se déclenche lorsque l'impression est fermée et que le bouton de l'appareil photo s'affiche à nouveau. Cet événement peut uniquement être lié dans 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)

Rappels

hideOtherGuis

hideOtherGuis(callback:function)

Ce rappel s'exécute immédiatement avant l'affichage de l'impression, vous permettant de désactiver l'intégralité du ScreenGuis ou des éléments avant que l'impression ne soit affichée. Les GUI utilisées par la cabine photo ont l'attribut ShowInPhotoBooth défini sur vrai. Voir Visibilité de la GUI pour plus de détails et un exemple de code.

showOtherGuis

showOtherGuis(callback:function)

Ce rappel s'exécute après la fermeture de l'impression, vous permettant de réactiver l'intégralité du ScreenGuis ou des éléments contenus. Les GUI utilisées par la cabine photo ont l'attribut ShowInPhotoBooth défini sur vrai. Voir Visibilité de la GUI pour plus de détails et un exemple de code.