Modo selfie

Os jogadores já fazem capturas de tela para comemorar momentos divertidos em experiências. O módulo de desenvolvedores SelfieMode permite que os jogadores capturem uma memória mais limpa daquele momento sem a janela ou lista de jogadores de bate-papo, enquanto também suporta efeitos de filtro, escondendo outros caracteres e postagem.

Uso do módulo

Instalação

Para usar o módulo SelfieMode em uma experiência:

  1. Na aba Exibir, abra a Caixa de ferramentas e selecione a aba Mercado.

    Botão de ativação da Caixa de ferramentas no Studio.
  2. Verifique se a ordenação de Modelos está selecionada e, em seguida, clique no botão Exibir Tudo para Categorias.

  3. Encontre e clique no painel DEV MODULES

  4. Encontre o módulo Modo Selfie e clique nele, ou arraste e solte-o para a visualização 3D.

  5. Na janela do Explorador, mova todo o modelo SelfieMode para o ServerScriptService. Ao executar a experiência, o módulo será distribuído para vários serviços e começará a ser executado.

Configuração

O módulo é pré-configurado para funcionar com a maioria dos casos de uso, mas é fácil customizá-lo por meio da função configure.

  1. Em StarterPlayerScripts, crie um novo Class. LocalScript e renomeie-o para o ConfigureSelfieMode.

  2. Cole o seguinte código dentro do script novo.

    LocalScript - ConfigureSelfieMode

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

Movimento do personagem

Pode ser vantajoso impedir que o personagem do jogador se mova enquanto estiver no modo selfie. Para fazer isso, defina disableCharacterMovement para verdadeiro e uma chamada de configure.

LocalScript - ConfigureSelfieMode

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

Ações do Modo Selfie

O SelfieMode vem com as seguintes ações, cada uma das quais você pode usar com as funções activateAction, deactivateAction e toggleAction, ou então detectar por meio dos eventos actionActivated e actionDeactivated.

Profundidade de campo

Por padrão, o SelfieMode mostra uma profundidade de campo genérica (desfoque sutil do fundo) quando o jogador liga a ação.

Desligada
Ligada

Para mudar a profundidade de campo padrão, defina depthOfFieldEffect para sua própria instância de Class. DepthOfFieldEffect em uma chamada de configure.

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

Bloqueio de visão

O botão de Bloqueio de visão faz com que o personagem do jogador olhe para a câmera enquanto a pose para selfie é configurada dentro de uma rotação realista para o pescoço.

Ocultar outros

Por padrão, outros personagens ficam visíveis junto ao personagem do jogador. Os jogadores podem obter uma foto solo perfeita clicando no botão Ocultar outros. Quando ligado, outros personagens são ocultados da tela e permanecem invisíveis que a ação seja desligada.

Filtro

A ação Filtro permite que o jogador aplique um filtro pré-definido, que tem as opções Realçar, Suave, Antigo, Fofo, Dramático e Monocromático.

Suave
Dramático
Monocromático

Pose

A ação Pose permite que o jogador escolha uma pose pré-definida das opções Torcendo, Batendo palmas, Golfinho, Dança do Fio, Tocando Guitarra, Onda de Pulos, Mais alto, Top Rock, Rodopio e Onda.

Dança do Fio
Mais alto
Dança do Fio

Referência de API

Tipos

Ação

Cada ação é representada por um dicionário com os seguintes pares de chave-valor:

ChaveTipoDescrição
namestringNoma da ação, mostrado primeiramente nas dicas.
descriptionstringDescrição da ação, mostrado após nome nas dicas.
iconstringID do recurso para o ícone da ação.
activeIconstringID do recurso para ícone da ação em estado "ativo". Só pode ser usado em ações pai, não em subações.
actionstabelaLista opcional de subações. Isso permite que você crie submenus de várias outras ações.
parentAçãoO pai da ação; só se aplica a uma subação e aponta para a ação que a contém.
onActivatedfunçãoCallback opcional que é executado quando o jogador ativa uma ação ou subação. Normalmente, se a ação contiver subações, apenas as subações precisarão de um callback definido de modo a saber que o jogador ativou a subação e que não se trata de uma "expansão" da ação pai.
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)

Enumeradores

SelfieMode. Action

O SelfieMode vem várias ações. Você pode usar esse enum com as funções activateAction, deactivateAction, toggleAction.

NomeResumo
DepthOfFieldReferência da ação Profundidade de campo.
LockGazeReferência da ação Bloqueio de visão.
HideOthersReferência da ação Ocultar outros.
FilterReferência da ação Filtro.
PoseReferência da ](#pose)ação [Pode.
LocalScript

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

Funções

configurar

configure(config:table)

Substitui as opções de configuração padrão por meio das chaves-valor na tabela config. Esta função só poder ser chamada de um Class. LocalScript.

ChaveDescriçãoPadrão
disableCharacterMovementSe verdadeiro, evita que o personagem se mova enquanto o modo selfie estiver aberto.false
depthOfFieldEffectClass. DepthOfFieldEffectInstância personalizada opcional que aparece quando o jogador ativa a ação Profundidade de campo.
LocalScript - ConfigureSelfieMode

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

openSelfieMode

openSelfieMode()

Um jogador normalmente abre o modo selfie com o botão "câmera" do lado direito da tela, mas essa função permite abri-lo por meio de código. Ao implementar um botão personalizado, como mostrado abaixo, é preciso desabilitar o botão padrão por meio de setHudButtonEnabled. Esta função só poder ser chamada de um Class. 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()

Um jogador normalmente fecha o modo selfie com o botão na parte inferior da tela, mas essa função permite que fechar o modo por meio de código. Só pode ser chamado de um Class. LocalScript.

LocalScript

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

isSelfieModeOpen

isSelfieModeOpen():boolean

Retorna true se o modo selfie estiver aberto como resultado da ação do jogador ou por meio de openSelfieMode. Esta função só poder ser chamada de um Class. LocalScript.

LocalScript

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

setHudButtonEnabled

setHudButtonEnabled()

Define se o botão padrão para entrar no modo selfie é exibido. Útil ao implementar o openSelfieMode por meio de um botão personalizado de IU. Esta função só poder ser chamada de um Class. 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

Obtém um tipo de ação por meio do 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)

Ativa de forma programática uma das ações padrão. É o mesmo que ocorre quando um jogador alterna a ação da barra de ações. Só pode ser chamado de um Class. 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)

Ativa de forma programática uma das ações padrão. É o mesmo que ocorre quando um jogador ativa a ação da barra de ações. Só pode ser chamado de um Class. 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

Desativa de forma programática uma das ações padrão. É o mesmo que quando um jogador ativa a ação fora da barra de ações. Só pode ser chamado de um Class. 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 o tema do modo selfie, incluindo tamanho de texto, fonte, cores de botão/dica e mais. Esta função só poder ser chamada de um Class. LocalScript.

Geral

ChaveDescriçãoPadrão
textSizeTamanho de todo o texto."16"
fontFont usada em toda a IU (Enum. Font).GothamMedium
paddingPreenchimento principal usado para posicionar elementos da IU (UDim).(0, 12)
paddingSmallO preenchimento menor usado para aplicar margens sutis entre aos elementos (UDim).(0, 6)
paddingScreenPreenchimento usado em torno dos cantos da janela para dar mais espaço ao modo selfie (UDim).(0, 24)
backgroundColorCor de plano de fundo usada na barra que mostra as ações (`Datatype.[0, 0, 0]
scrollBarColorCor da barra de rolagem usada em elementos de Class. ScrollingFrame do módulo (Datatype. Color3).[255, 255, 255]

Botões e dicas

ChaveDescriçãoPadrão
openButtonBackgroundColorCor de fundo do botão da HUD do lado direito da tela, usado para abrir o modo selfie (Datatype. Color3).[255, 255, 255]
openButtonIconColorCor ícone de câmera do botão da HUD (Datatype. Color3).[0, 0, 0]
closeButtonBackgroundColorCor de plano de fundo do botão "fechar" (Datatype. Color3).[0, 0, 0]
closeButtonIconColorCor do ícone para o botão fechar (Datatype. Color3).[255, 255, 255]
actionButtonBackgroundColorCor de fundo de vários botões de ação usados para ligar e desligar ações (Datatype. Color3).[255, 255, 255]
actionButtonIconColorCor do ícone para vários botões de ação (Datatype. Color3).[0, 0, 0]
tooltipBackgroundColorCor de fundo para dicas e notificações (Datatype. Color3).[0, 0, 0]
tooltipNameColorCor do texto no nome das dicas (Datatype. Color3). Também usado como cor do texto para notificações.[255, 255, 255]
tooltipDescriptionColorCor das descrições das dicas, ligeiramente transparente para dar foco aos nomes das dicas (Datatype. Color3). Não é usado nas notificações.[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)

Define se o modo selfie está ativo ou não. Quando desabilitado, toda a IU para o módulo é removida e todos os eventos são desconectados. Esta função só poder ser chamada de um Class. LocalScript.

LocalScript

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

Eventos

selfieModeOpened

selfieModeOpened():RBXScriptSignal

Dispara quando o jogador abre o modo selfie ou quando a função openSelfieMode é chamada. O evento só pode ser conectado a um Class. 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

Dispara quando o jogador fecha o modo selfie ou quando a função closeSelfieMode é chamada. O evento só pode ser conectado a um Class. 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

Inicia quando uma ação é ativada; esta pode ser uma das principais ações como Profundidade de Campo, , Bloquear Olhar, ou Ocultar OutrosAlternativamente, pode ser uma sub-ação como um filtro ou pose. A função conectada recebe a ação ativada. O evento só pode ser conectado a um Class. 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

Dispara quando uma ação primária ou subação é desativada. A função conectada recebe a ação desativada. O evento só pode ser conectado a um Class. 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

Dispara quando um filtro é aplicado ou removido. A função conectada recebe o nome do filtro novo e o nome do filtro antigo. O evento só pode ser conectado a um Class. 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

Dispara quando uma pose é aplicava ou removida. A função conectada recebe o nome da pose nova e o nome da pose antiga. O evento só pode ser conectado a um Class. 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)