Cabine photo

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Prendre une photo est un excellent moyen de commémorer une grande expérience.Le module développeur de PhotoBooth est un outil de stylisme photo facile à utiliser qui permet aux joueurs de poser une pose unique avec un fond qui représente leur expérience.

Utilisation du module

Étabissement

Pour utiliser le module PhotoBooth dans une expérience :

  1. De l'onglet Affichage, ouvrez la boîte à outils et sélectionnez l'onglet boutique des créateurs .

    Toolbox toggle button in Studio
  2. Assurez-vous que le tri des modèles est sélectionné, puis cliquez sur le bouton Voir tout pour les catégories .

  3. Localisez et cliquez sur la case modules de développement .

  4. Localisez le module Cabine photo et cliquez dessus, ou glissez-déposez-le dans la voir3D.

  5. Dans la fenêtre Explorateur, déplacez l'ensemble du modèle PhotoBooth dans ServerScriptService .Une fois l'expérience exécutée, le module se distribuera à différents services et commencera à fonctionner.

Positionnez le stand

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

  1. Localisez le PhotoBooth mesh à l'intérieur du dossier Espace de travail du dossier principal du module.

  2. Déplacez-le dans la hiérarchie de niveau supérieur Espace de travail et positionnez-le où vous le souhaitez.

Configération

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

  1. Dans StarterPlayerScripts , créez un nouveau LocalScript et renommez-le en Configurer le photomaton .

  2. Collez le code suivant dans le nouveau script.

    LocalScript - Configurer le PhotoBooth

    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 le stand photo affiche un nouvel écran à un client local, un événement correspondant est déclenché.Ces événements peuvent être connectés dans un LocalScript afin que vous puissiez répondre avec votre propre logique personnalisée.

Lecteur 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 l'interface graphique

Par défaut, le stand photo cache tous les ScreenGuis et CoreGuis lorsqu'une photo est mise en scène.Si vous souhaitez annuler ce comportement de dissimulation automatique et décider programmatiquement des interfaces graphiques qui doivent rester visibles, incluez les appels de rappel hideOtherGuis et showOtherGuis et répondez avec votre propre logique personnalisée.

Lecteur 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 = {}
-- Créer une interface graphique d'écran qui ne sera pas cachée
local specialGuiInstance = Instance.new("ScreenGui")
-- Tirer la GUI d'écran au-dessus de la interface utilisateur graphiquede la cabine photo
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Définir l'attribut sur l'interface graphique pour empêcher la dissimulation
specialGuiInstance:SetAttribute("ShowInPhotoBooth", true)
-- Ajouter une étiquette de texte à l'interface interface utilisateur graphique
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()
-- Masquer toutes les interfaces graphiques définies par le développeur sauf celles marquées avec l'attribut
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
-- Masquer les interfaces graphiques principales spécifiques
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
PhotoBooth.showOtherGuis(function()
-- Afficher toutes les interfaces graphiques définies par le développeur qui ont été cachées
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Afficher les interfaces utilisateur principales spécifiques qui ont été cachées
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)

Référence de l'API

Fonctions

configurer

configurer(config: table )

Remplacements des options de configuration par défaut via les clés/ valeurs suivantes dans la table config .Cette fonction ne peut être appelée qu'à partir d'un LocalScript .

CléAvertissementPar défaut
frameMessageMessage qui est affiché en bas de la photo. Sa durée peut être contrôlée via la propriété fadeUiDelay.« Utilisez votre appareil pour prendre une capture d'écran et la partager ! »
fadeUiDelayIl est temps d'afficher le message du cadre avant qu'il ne disparaisse, en quelques secondes. Définir à un nombre négatif pour ne jamais disparaître.3
closeButtonImageImage à utiliser pour le bouton de fermeture de la photo, placé au-dessus de l'image closeButtonBackgroundImage.« rbxassetid://7027440823 »
closeButtonBackgroundImageImage de fond à utiliser pour le bouton de fermeture de photo.« rbxassetid://7027440891 »
cameraLandscapePositionDistance de la caméra de la cabine photo, en avant et vers le haut du personnage, lors de la prise d'une photo en mode paysage (Vector2).(5, 2)
cameraPortraitPositionDistance de la caméra de la cabine photo, en avant et vers le haut du personnage, lors de la prise d'une photo en mode portrait (Vector2).(10, 1)
countdownFontPolice à utiliser pour les chiffres dans le compte à rebours ( Enum.Font ).GothamBlack
countdownTextColorCouleur des chiffres dans le compte à rebours ( Color3 ).[255, 255, 255]
printoutCharacterPositionPosition du personnage sur l'écran lorsque l'impression est affichée ( UDim2 ).(0.5, 0, 0.5, 0)
printoutCharacterSizeQuantité d'espace d'écran que le personnage occupe dans l'impression ( UDim2 ).(1, 0, 1, 0)
characterAnimationID de la ressource de l'animation que le personnage prend dans la photo, suspendue à son cadre de départ.« rbxassetid://6899663224 »
filterImageImage à appliquer sur la photo en tant que filtres. Si nil , un filtre par défaut qui obscurcit les bords de l'image sera utilisé.nil
LocalScript - Configurer le PhotoBooth

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),
})

définir les arrière-plans

setBackgrounds(backgrounds: table )

Annule les arrière-plans par défaut fournis par le stand photo.Les images de fond doivent être à une proportion d'aspect de 16:9 (1024×768) pour une expérience optimale et leurs ID d'actifs doivent être inclus dans l'matricede fonds.1–4 (inclus) arrière-plans peuvent être fournis.

Lecteur localScript

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

Événements

compte à rebours commencé

S'enflamme lorsque le compte à rebours commence. Cet événement ne peut être connecté qu'en LocalScript.

Lecteur 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)

printoutAffiché

Se déclenche lorsque l'impression est affichée à l'utilisateur. Cet événement ne peut être connecté qu'en LocalScript .

Lecteur 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)

promptAffiché

S'enflamme lorsque l'impression est fermée et que le bouton de la caméra s'affiche à nouveau. Cet événement ne peut être connecté qu'en LocalScript.

Lecteur 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)

Appels de rappel

masquerOtherGuis

hideOtherGuis(rappel: function )

Ce rappel s'exécute immédiatement avant l'affichage de l'impression, vous permettant de désactiver l'ensemble de ScreenGuis ou des éléments à l'intérieur d'eux avant l'affichage de l'impression.Les interfaces utilisées par le stand photo ont l'attribut Afficher dans le stand photo défini sur vrai .Voir visibilité de l'interface graphique pour les détails et le code d'échantillon.

afficherOtherGuis

showOtherGuis(rappel: function )

Ce rappel s'exécute après que l'impression ait été fermée, vous permettant de réactiver l'ensemble de ScreenGuis ou des éléments à l'intérieur d'eux.Les interfaces utilisées par le stand photo ont l'attribut Afficher dans le stand photo défini sur vrai .Voir visibilité de l'interface graphique pour les détails et le code d'échantillon.