Mode Selfie

Les joueurs effectuent déjà des captures d'écran pour immortaliser les moments forts de leurs expériences. Le module développeur SelfieMode permet aux joueurs de capturer un souvenir plus précis de ce moment sans fenêtre de discussion ni liste de joueurs, tout en prenant en charge les effets de filtre, le masquage d'autres personnages et la pose.

Utilisation du module

Installation

Pour utiliser le module SelfieMode 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 Mode Selfie et cliquez dessus, ou faites-le glisser dans la visualisation 3D.

  5. Dans la fenêtre Explorateur, déplacez l'intégralité du SelfieMode 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.

Paramétrage

Le module est préconfiguré pour fonctionner dans la plupart des cas d'utilisation, mais vous pouvez facilement le personnaliser grâce à sa fonction de configuration.

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

  2. Collez le code suivant dans le nouveau script.

    LocalScript - ConfigureSelfieMode

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
    SelfieMode.configure({
    disableCharacterMovement = true
    })

Mouvement du personnage

La possibilité d'empêcher le personnage du joueur de se déplacer en mode selfie peut s'avérer avantageuse. Vous pouvez y parvenir en attribuant la valeur vrai à l'option disableCharacterMovement dans un appel de configuration.

LocalScript - ConfigureSelfieMode

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
SelfieMode.configure({
disableCharacterMovement = true
})

Actions du Mode Selfie

SelfieMode propose les actions suivantes, chacune pouvant être utilisée avec les fonctions activateAction, deactivateAction et toggleAction, ou détectée via les événements actionActivated et actionDeactivated.

Profondeur de champ

Par défaut, SelfieMode affiche un effet générique de profondeur de champ (flou subtil de l'arrière-plan) lorsqu'un joueur active ou désactive l'action.

Désactivée
Activée

Pour modifier l'effet de profondeur de champ par défaut, définissez depthOfFieldEffect à votre propre instance DepthOfFieldEffect dans un appel de configuration.

LocalScript - ConfigureSelfieMode

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
local customDepthOfField = Instance.new("DepthOfFieldEffect")
customDepthOfField.NearIntensity = 0
customDepthOfField.FarIntensity = 1
customDepthOfField.FocusDistance = 5
customDepthOfField.InFocusRadius = 5
SelfieMode.configure({
depthOfFieldEffect = customDepthOfField
})

Verrouiller le regard

L'option Verrouiller le regard oblige le personnage du joueur à regarder l'appareil photo lorsqu'il paramètre la pose pour le selfie, dans les limites réalistes de l'angle de rotation de son cou.

Masquer les autres

Les autres personnages sont visibles à côté du personnage du joueur par défaut. Les joueurs peuvent obtenir un cliché parfait en solo en cliquant sur le bouton Masquer les autres. Lorsqu'elle est activée, les autres personnages disparaissent et restent invisibles jusqu'à ce que l'action soit désactivée.

Filtre

L'action Filtre permet au lecteur d'appliquer un filtre prédéfini parmi les options Pop, Doux, Ancien, Mignon, Dramatique et Monochrome.

Doux
Dramatique
Monochrome

Pose

L'action Pose permet au joueur de sélectionner une pose prédéfinie parmi les options suivantes : Acclamer, Applaudir, Dauphin, Prendre la pose, Guitare, Sauter de vague à vague, Plus fort, Top Rock, Tournoiement et Vague.

Prendre la pose
Plus fort
Tournoiement

Référence API

Types

Action

Chaque action est représentée par un dictionnaire contenant les paires clé-valeur suivantes :

CléTypeDescription
nomchaîneNom de l'action, affiché en premier dans les infobulles.
descriptionchaîneDescription de l'action, affichée après nom dans les infobulles.
icônechaîneID de l'objet pour l'icône de l'action.
activeIconchaîneID de l'objet pour l'icône de l'action dont le statut est « actif ». Peut uniquement être utilisé pour les actions parentes, et non pour les sous-actions.
actionstableauListe facultative des sous-actions. Cela vous permet de créer des sous-menus pour diverses autres actions.
parentActionLe parent de l'action ; ceci s'applique uniquement à une sous-action et pointe vers l'action qui la contient.
onActivatedfonctionFonction de rappel facultative qui s'exécute lorsqu'un joueur active une action ou une sous-action. Généralement, si une action contient des sous-actions, seules ces dernières auront besoin d'un rappel défini pour savoir que le joueur a activé la sous-action et qu'il n'a pas simplement « étendu » l'action parente.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
SelfieMode.actionActivated:Connect(function(action)
print(action.name, "activated")
end)
SelfieMode.actionDeactivated:Connect(function(action)
print(action.name, "deactivated")
end)

Enums

SelfieMode.Action

SelfieMode propose plusieurs actions. Vous pouvez utiliser cette enum avec les fonctions activateAction, deactivateAction et toggleAction.

NomRésumé
DepthOfFieldRéférence à l'action Profondeur de champ.
LockGazeRéférence à l'action Verrouiller le regard.
HideOthersRéférence à l'action Masquer les autres.
FiltreRéférence à l'action Filtre.
PoseRéférence à l'action Pose.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
-- Activate "Filter" action
SelfieMode.activateAction(SelfieMode.Action.Filter)

Fonctions

configurer

configurer(config:table)

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.

CléDescriptionPar défaut
disableCharacterMovementSi vrai, empêche le personnage de bouger lorsque le mode selfie est ouvert.faux
depthOfFieldEffectInstance personnalisée facultative de DepthOfFieldEffect qui apparaît lorsque le joueur active l'action Profondeur de champ.
LocalScript - ConfigureSelfieMode

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
SelfieMode.configure({
disableCharacterMovement = true
})

openSelfieMode

openSelfieMode()

Un joueur ouvre généralement le mode selfie à l'aide du bouton « caméra » situé sur le côté droit de l'écran, cette fonction vous permet de l'ouvrir à l'aide d'un code. Lorsque vous implémentez un bouton personnalisé comme indiqué ci-dessous, vous devez désactiver le bouton par défaut à l'aide de setHudButtonEnabled. Cette fonction peut uniquement être appelée à partir d'un LocalScript.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
local button = script.Parent
-- Remove the default button
SelfieMode.setHudButtonEnabled(false)
-- Connect the custom button
button.Activated:Connect(function()
SelfieMode.openSelfieMode()
end)

closeSelfieMode

closeSelfieMode()

Un joueur ferme généralement le mode selfie avec le bouton en bas de l'écran, cette fonction vous permet de le fermer par le biais d'un code. Peut uniquement être appelé à partir d'un LocalScript.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
SelfieMode.closeSelfieMode()

isSelfieModeOpen

isSelfieModeOpen() :boolean

Renvoie true si le mode selfie est ouvert suite à une action du joueur ou via openSelfieMode. Cette fonction peut uniquement être appelée à partir d'un LocalScript.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
SelfieMode.openSelfieMode()
print(SelfieMode.isSelfieModeOpen())

setHudButtonEnabled

setHudButtonEnabled()

Définit si le bouton par défaut pour entrer en mode selfie est affiché. Utile lors de la mise en œuvre du openSelfieMode via un bouton UI personnalisé. Cette fonction peut uniquement être appelée à partir d'un LocalScript.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
local button = script.Parent
-- Remove the default button
SelfieMode.setHudButtonEnabled(false)
-- Connect the custom button
button.Activated:Connect(function()
SelfieMode.openSelfieMode()
end)

getAction

getAction(action:SelfieMode.Action):Action

Obtient un type d'Action via une enum SelfieMode.Action.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
local lockGazeAction = SelfieMode.getAction(SelfieMode.Action.LockGaze)

activateAction

activateAction(action:SelfieMode.Action)

Active de manière programmée l'une des actions par défaut. Cela correspond à l'activation de l'action par le joueur à partir de la barre d'action. Peut uniquement être appelé à partir d'un LocalScript.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
-- Activate "Filter" action
SelfieMode.activateAction(SelfieMode.Action.Filter)

deactivateAction

deactivateAction(action:SelfieMode.Action)

Désactive de manière programmée l'une des actions par défaut. Cela correspond à la désactivation de l'action par le joueur à partir de la barre d'action. Peut uniquement être appelé à partir d'un LocalScript.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
-- Deactivate "Filter" action
SelfieMode.deactivateAction(SelfieMode.Action.Filter)

toggleAction

toggleAction(action:SelfieMode.Action):boolean

Active une action si elle est désactivée, ou la désactive si elle est activée. Ceci correspond à un clic du joueur sur l'action dans la barre d'action. Renvoie le nouveau statut « est activé » sous la forme d'un booléen. Peut uniquement être appelé à partir d'un LocalScript.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
local lockGazeAction = SelfieMode.getAction(SelfieMode.Action.LockGaze)
local isEnabled = SelfieMode.toggleAction(lockGazeAction)
if isEnabled then
print("Activated", lockGazeAction.name)
else
print("Deactivated", lockGazeAction.name)
end

setTheme

setTheme(theme:table)

Configure le thème du mode selfie, notamment la taille du texte, la police, les couleurs des boutons et des infobulles, et plus encore. Cette fonction peut uniquement être appelée à partir d'un LocalScript.

Généralités

CléDescriptionPar défaut
textSizeTaille de tous les textes."16"
fontPolice utilisée dans toutes les UI (Enum.Font).GothamMedium
paddingRembourrage principal utilisé pour l'agencement des objets de l'UI (UDim).(0, 12)
paddingSmallRembourrage plus petit utilisé pour appliquer des marges subtiles entre les objets (UDim).(0, 6)
paddingScreenRembourrage sur les bords de l'écran pour donner de l'espace au mode selfie (UDim).(0, 24)
backgroundColorCouleur d'arrière-plan utilisée pour la barre qui affiche les actions (Color3).[0, 0, 0]
scrollBarColorCouleur de la barre de défilement utilisée dans les éléments ScrollingFrame du module (Color3).[255, 255, 255]

Buttons et infobulles

CléDescriptionPar défaut
openButtonBackgroundColorCouleur d'arrière-plan du bouton d'affichage tête haute utilisé pour ouvrir le mode selfie sur le côté droit de l'écran (Color3).[255, 255, 255]
openButtonIconColorCouleur de l'icône de la caméra du bouton d'affichage tête haute (Color3).[0, 0, 0]
closeButtonBackgroundColorCouleur d'arrière-plan du bouton « fermer » (Color3).[0, 0, 0]
closeButtonIconColorCouleur de l'icône du bouton « fermer » (Color3).[255, 255, 255]
actionButtonBackgroundColorCouleur d'arrière-plan des différents boutons d'action utilisés pour passer d'une action à l'autre (Color3).[255, 255, 255]
actionButtonIconColorCouleur des icônes pour les différents boutons d'action (Color3).[0, 0, 0]
tooltipBackgroundColorCouleur d'arrière-plan des infobulles et des notifications (Color3).[0, 0, 0]
tooltipNameColorCouleur du texte des noms des infobulles (Color3). Également utilisée comme couleur du texte pour les notifications.[255, 255, 255]
tooltipDescriptionColorCouleur des descriptions des infobulles, légèrement estompée pour mettre l'accent sur les noms des infobulles (Color3). Non utilisé pour les notifications.[169, 169, 169]
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
SelfieMode.setTheme({
textSize = 20,
font = Enum.Font.Michroma,
backgroundColor = Color3.fromRGB(0, 40, 75),
})

setEnabled

setEnabled(isEnabled:boolean)

Définit si le mode selfie est activé ou non. Lorsqu'il est désactivé, toute l'UI du module est supprimée et tous les événements sont déconnectés. Cette fonction peut uniquement être appelée à partir d'un LocalScript.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
SelfieMode.setEnabled(false)

Événements

selfieModeOpened

selfieModeOpened() :RBXScriptSignal

Se déclenche lorsque le joueur ferme le mode selfie ou lorsque closeSelfieMode est appelé. Cet événement peut uniquement être lié dans un LocalScript.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
SelfieMode.selfieModeOpened:Connect(function()
print("Selfie mode open")
end)

selfieModeClosed

selfieModeClosed() :RBXScriptSignal

Se déclenche lorsque le lecteur ouvre le mode selfie ou lorsque openSelfieMode est appelé. Cet événement peut uniquement être lié dans un LocalScript.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
SelfieMode.selfieModeClosed:Connect(function()
print("Selfie mode closed")
end)

actionActivated

actionActivated(action:SelfieMode.Action):RBXScriptSignal

Se déclenche lorsqu'une action ou une sous-action principale est désactivée. La fonction liée reçoit l'Action désactivée. Cet événement peut uniquement être lié dans un LocalScript.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
SelfieMode.actionActivated:Connect(function(action)
print(action.name, "activated")
end)

actionDeactivated

actionDeactivated(action:SelfieMode.Action):RBXScriptSignal

Se déclenche lorsqu'une pose est appliquée ou supprimée. La fonction liée reçoit le nouveau nom et l'ancien nom de la pose. Cet événement peut uniquement être lié dans un LocalScript.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
SelfieMode.actionDeactivated:Connect(function(action)
print(action.name, "deactivated")
end)

filterChanged

filterChanged(newFilter:string, oldFilter:string):RBXScriptSignal

Se déclenche lorsqu'un filtre est appliqué ou supprimé. La fonction liée reçoit le nouveau et l'ancien nom du filtre. Cet événement peut uniquement être lié dans un LocalScript.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
SelfieMode.filterChanged:Connect(function(newFilter, oldFilter)
print("Filter changed from", oldFilter, "to", newFilter)
end)

poseChanged

poseChanged(newPose:string, oldPose:string):RBXScriptSignal

Se déclenche lorsqu'un filtre est appliqué ou supprimé. La fonction liée reçoit le nouveau nom et l'ancien nom de la pose. Cet événement peut uniquement être lié dans un LocalScript.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage:WaitForChild("SelfieMode"))
SelfieMode.poseChanged:Connect(function(newPose, oldPose)
print("Pose changed from", oldPose, "to", newPose)
end)