Modo selfi

Los jugadores ya hacen capturas de pantalla para conmemorar momentos divertidos en las experiencias. El módulo de desarrolladores SelfieMode permite a los jugadores capturar un recuerdo más limpio de ese momento sin la ventana de chat ni la lista de jugadores, además de admitir efectos de filtro, ocultar a otros personajes y posar.

Uso del módulo

Instalación

Sigue estos pasos para usar el módulo SelfieMode en una experiencia:

  1. En la pestaña Ver, abre la Caja de herramientas y selecciona la pestaña Mercado.

    Botón de activación de Caja de herramientas en Studio
  2. Asegúrate de que la clasificación de Modelos esté seleccionada y, a continuación, haz clic en el botón Ver todo para las Categorías.

  3. Busca y haz clic en el mosaico MÓDULOS DE DESARROLLADORES.

  4. Busca el módulo Modo selfie y haz clic en él o arrástralo y suéltalo en la vista 3D.

  5. En la ventana del Explorador, mueve todo el modelo de Modo selfie a ServerScriptService. Al ejecutar la experiencia, el módulo se distribuirá a varios servicios y comenzará a ejecutarse.

Configuración

El módulo está preconfigurado para funcionar en la mayoría de los casos de uso, pero puedes personalizarlo fácilmente mediante la función de configuración.

  1. En StarterPlayerScripts, crea un nuevo LocalScript y cámbiale el nombre a ConfigureSelfieMode.

  2. Pega el siguiente código en el script nuevo.

    LocalScript - ConfigureSelfieMode

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

Movimiento del personaje

Puede ser ventajoso evitar que el personaje del jugador se mueva mientras está en el modo selfie. Puedes lograr esto al establecer disableCharacterMovement en verdadero en una llamada de configuración.

LocalScript - ConfigureSelfieMode

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

Acciones del modo selfie

SelfieMode incluye las siguientes acciones, cada una de las cuales puedes usar con las funciones activateAction, desactivateAction y toggleAction, o detectar a través de los eventos actionActivated y actionDeactivated.

Profundidad de campo

De forma predeterminada, SelfieMode muestra un efecto genérico de profundidad de campo (desenfoque sutil del fondo) cuando un jugador activa la acción.

Desactivado
Activado

Para cambiar el efecto de profundidad de campo predeterminado, establece depthOfFieldEffect en tu propia instancia DepthOfFieldEffect en una llamada de configuración.

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

Bloquear la mirada

El botón de alternancia de Bloquear mirada hace que el personaje del jugador vea a la cámara mientras se configura la pose de una selfie, dentro de un rango realista de giro del cuello.

Ocultar a otros

De forma predeterminada, los otros personajes son visibles junto al personaje del jugador. Los jugadores pueden obtener un tiro perfecto en solitario al hacer clic en el botón Ocultar a otros. Cuando se activa, los otros personajes se desvanecen y permanecen invisibles hasta que la acción se desactiva.

Filtro

La acción Filtrar permite al jugador aplicar un filtro preestablecido de las opciones Pop, Suave, Antiguo, Lindo, Dramático y Monocromo.

Suave
Dramático
Monocromo

Pose

La acción Posar permite al jugador seleccionar una pose preestablecida entre las opciones Animar, Aplaudir, Delfín, Hilo dental, Guitarra, Saltar la ola, Ruido, Top Rock, Girar y Onda.

Hilo dental
Ruido
Girar

Referencia API

Tipos

Acción

Cada acción está representado por un diccionario con los siguientes pares clave-valor:

ClaveTipoDescripción
namestringNombre de la acción, que se muestra primero en los consejos sobre herramientas.
descriptionstringDescripción de la acción, que se muestra después de nombre en los consejos sobre herramientas.
iconstringIdentificación del recurso para el ícono de la acción.
activeIconstringIdentificación del recurso para el ícono de la acción en estado "activo". Solo se puede usar en las acciones principales, no en las subacciones.
actionstableLista opcional de subacciones. Esto te permite crear submenús de otras acciones.
parentAcciónEl padre de la acción; esto solo se aplica a una subacción y apunta a la acción que la contiene.
onActivatedfunctionFunción de devolución de llamada opcional que se ejecuta cuando un jugador activa una acción o subacción. Por lo general, si una acción contiene subacciones, solo las subacciones necesitarán una devolución de llamada definida como un medio para saber que el jugador activó la subacción y no simplemente "expandió" la acción principal.
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)

Enumeraciones

SelfieMode.Action

SelfieMode viene con varias acciones. Puedes usar esta enumeración con las funciones activateAction, desactivateAction y toggleAction.

NombreResumen
DepthOfFieldReferencia a la acción de Profundidad de campo.
LockGazeReferencia a la acción Bloquear mirada.
HideOthersReferencia a la acción ](#hide-others)Ocultar a otros[.
FilterReferencia a la acción Filtrar.
PoseReferencia a la acción Posar.
LocalScript

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

Funciones

configure

configure(config:table)

Reemplaza las opciones de configuración predeterminadas a través de las siguientes claves o valores en la tabla config. A esta función solo se puede acceder desde un LocalScript.

ClaveDescripciónPredeterminado
disableCharacterMovementSi es "true", evita que el personaje se mueva mientras el modo selfie está abierto.false
depthOfFieldEffectLa instancia personalizada DepthOfFieldEffect opcional que aparece cuando el jugador activa la acción Profundidad de campo.
LocalScript - ConfigureSelfieMode

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

openSelfieMode

openSelfieMode()

Por lo general, un jugador abre el modo selfie con el botón "cámara" de la parte derecha de la pantalla, pero esta función te permite abrirlo a través de código. Al implementar un botón personalizado, como se muestra a continuación, debes desactivar el botón predeterminado a través de setHudButtonEnabled. A esta función solo se puede acceder desde 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()

Por lo general, un jugador cierra el modo selfie con el botón en la parte inferior de la pantalla, pero esta función te permite cerrarlo a través de código. Solo se puede llamar desde un LocalScript.

LocalScript

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

isSelfieModeOpen

isSelfieModeOpen():boolean

Devuelve true si el modo selfie está abierto como resultado de la acción del jugador o a través de openSelfieMode. A esta función solo se puede acceder desde un LocalScript.

LocalScript

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

setHudButtonEnabled

setHudButtonEnabled()

Establece si se muestra el botón predeterminado para acceder al modo selfie. Es útil al implementar openSelfieMode a través de un botón de la interfaz de usuario personalizada. A esta función solo se puede acceder desde 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

Obtiene un tipo Action a través de una enumeración 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)

Activa mediante programación una de las acciones predeterminadas. Esto es lo mismo que cuando un jugador activa la acción desde la barra de acción. Solo se puede llamar desde 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)

Desactiva mediante programación una de las acciones predeterminadas. Es lo mismo que cuando un jugador desactiva la acción de la barra de acción. Solo se puede llamar desde 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

Activa una acción si está desactivada o la desactiva si está activada. Esto es lo mismo que cuando un jugador hace clic en la acción desde la barra de acción. Devuelve el nuevo estado "está activado" como booleano. Solo se puede llamar desde 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)

Configura el tema del modo selfie, incluido el tamaño del texto, la fuente, los colores del botón o la descripción de herramientas y más. A esta función solo se puede acceder desde un LocalScript.

General

ClaveDescripciónPredeterminado
textSizeTamaño de todo el texto.16
fontFuente utilizada en toda la interfaz de usuario (Enum.Font).GothamMedium
paddingRelleno principal que se usa para el diseño de los elementos de la interfaz de usuario (UDim).(0, 12)
paddingSmallRelleno más pequeño que se usa para aplicar márgenes sutiles entre los elementos (UDim).(0, 6)
paddingScreenRelleno que se usa alrededor de los bordes de la pantalla para darle espacio al modo selfie (UDim).(0, 24)
backgroundColorColor de fondo que se usa para la barra que muestra las acciones (Color3).[0, 0, 0]
scrollBarColorColor de la barra de desplazamiento que se usa en los elementos ScrollingFrame del módulo (Color3).[255, 255, 255]

Botones y consejos sobre herramientas

ClaveDescripciónPredeterminado
openButtonBackgroundColorColor de fondo del botón de HUD de la parte derecha de la pantalla que se usa para abrir el modo selfie (Color3).[255, 255, 255]
openButtonIconColorColor del ícono de la cámara del botón de HUD (Color3).[0, 0, 0]
closeButtonBackgroundColorColor de fondo del botón "cerrar" (Color3).[0, 0, 0]
closeButtonIconColorColor del ícono del botón "cerrar" (Color3).[255, 255, 255]
actionButtonBackgroundColorColor de fondo de los distintos botones de acción utilizados para alternar acciones (Color3).[255, 255, 255]
actionButtonIconColorColor del ícono para los distintos botones de acción (Color3).[0, 0, 0]
tooltipBackgroundColorColor de fondo de los consejos sobre herramientas y las notificaciones (Color3).[0, 0, 0]
tooltipNameColorColor del texto de los nombres de los consejos sobre herramientas (Color3). También se usa como color del texto para las notificaciones.[255, 255, 255]
tooltipDescriptionColorColor de los consejos sobre herramientas, ligeramente difuminado para centrar la atención en los nombres de los consejos sobre herramientas (Color3). No se usa para las notificaciones.[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)

Establece si el modo selfie está activado o no. Cuando se desactiva, se elimina toda la interfaz de usuario del módulo y se desconectan todos los eventos. A esta función solo se puede acceder desde un LocalScript.

LocalScript

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

Eventos

selfieModeOpened

selfieModeOpened():RBXScriptSignal

Se activa cuando el jugador abre el modo selfie o cuando se llama a openSelfieMode. Este evento solo se puede conectar en 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 activa cuando el jugador cierra el modo selfie o cuando se llama closeSelfieMode. Este evento solo se puede conectar en 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 activa cuando se activa una acción; puede ser una de las acciones principales, como Profundidad de campo, Bloquear la mirada u Ocultar a otros; o puede ser una subacción, como un filtro o una pose. La función conectada recibe la Acción activada. Este evento solo se puede conectar en 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 activa cuando se desactiva una acción o subacción primaria. La función conectada recibe la Acción desactivada. Este evento solo se puede conectar en 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 activa cuando se aplica o se elimina un filtro. La función conectada recibe el nuevo nombre del filtro y el nombre del filtro antiguo. Este evento solo se puede conectar en 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 activa cuando se aplica o se elimina una pose. La función conectada recibe el nuevo nombre de la pose y el antiguo nombre de la pose. Este evento solo se puede conectar en 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)