自拍模式

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

玩家已经在体验中截图以纪念有趣的时刻。SelfieMode 开发者模块允许玩家捕捉更清晰的瞬间记忆,排除聊天窗口和玩家列表,同时支持滤镜效果、隐藏其他角色和摆姿势。

模块使用

安装

要在体验中使用SelfieMode模块:

  1. 从Studio的窗口菜单或主页选项卡工具栏打开工具箱,然后选择创作者商店选项卡。

  2. 确保选择了模型排序,然后单击查看所有按钮以查看类别

  3. 找到并点击图块。

  4. 找到自拍模式模块并单击它,或将其拖放到3D视图中。

  5. 资源管理器窗口中,将整个SelfieMode包移动到ReplicatedStorage。在运行体验时,该模块将开始运行。

配置

该模块预配置以适用于大多数用例,但您可以通过configure函数轻松自定义它。

  1. StarterPlayerScripts中,创建一个新的LocalScript并将其重命名为ConfigureSelfieMode

  2. 将以下代码粘贴到新脚本中。

    LocalScript - ConfigureSelfieMode

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

角色移动

在自拍模式中,防止玩家的角色移动可能是有利的。您可以通过在configure调用中将disableCharacterMovement设置为true来实现这一点。

LocalScript - ConfigureSelfieMode

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

自拍模式操作

SelfieMode包含以下操作,您可以通过activateActiondeactivateActiontoggleAction函数使用它们,或者通过actionActivatedactionDeactivated事件检测它们。

虚景深

默认情况下,当玩家切换操作时,SelfieMode显示一个通用的虚景深效果(背景的微妙模糊)。

要更改默认的虚景深效果,请在configure调用中将depthOfFieldEffect设置为您自己的DepthOfFieldEffect实例。

LocalScript - ConfigureSelfieMode

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

锁定视线

锁定视线开关使玩家的角色在摆自拍姿势时能够朝向相机,且在颈部可以转动的合理范围内。

隐藏其他

默认情况下,其他角色在玩家的角色旁边可见。玩家可以通过单击隐藏其他按钮获得完美的单人照片。当切换开启时,其他角色将逐渐淡出视野,并在操作关闭之前保持不可见。

滤镜

滤镜操作允许玩家从流行柔和古董可爱戏剧性单色等选项中应用预设滤镜。

姿势

姿势操作允许玩家选择欢呼鼓掌海豚舞蹈吉他跳跃挥手更响亮顶端摇摆旋转挥手等选项中的预设姿势。

API 参考

类型

操作

每个操作由一个包含以下键值对的字典表示:

类型描述
namestring操作名称,在工具提示中首先显示。
descriptionstring操作描述,在工具提示中显示在name之后。
iconstring操作图标的资产ID。
activeIconstring操作在“活动”状态下的图标资产ID。仅可用于父操作,而不能用于子操作。
actionstable可选的子操作列表。这允许您创建多个其他操作的子菜单。
parentAction操作的父级;这仅适用于子操作,并指向包含它的操作。
onActivatedfunction可选的回调函数,当玩家激活操作或子操作时运行。通常,如果操作包含子操作,仅需要为子操作定义回调,以便知道玩家激活了子操作,而不仅仅是“展开”父操作。
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.actionActivated:Connect(function(action)
print(action.name, "已激活")
end)
SelfieMode.actionDeactivated:Connect(function(action)
print(action.name, "已停用")
end)

枚举

SelfieMode.Action

SelfieMode包含几个操作。您可以将此枚举与activateActiondeactivateActiontoggleAction函数一起使用。

名称摘要
DepthOfField虚景深操作的引用。
LockGaze锁定视线操作的引用。
HideOthers隐藏其他操作的引用。
Filter滤镜操作的引用。
Pose姿势操作的引用。
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
-- 激活“滤镜”操作
SelfieMode.activateAction(SelfieMode.Action.Filter)

函数

configure

configure(config: table)

通过config表中的以下键/值覆盖默认配置选项。此函数只能从LocalScript中调用。

描述默认值
disableCharacterMovement如果为true,则在自拍模式打开时防止角色移动。false
depthOfFieldEffect可选的自定义DepthOfFieldEffect实例,当玩家切换虚景深操作时出现。
LocalScript - ConfigureSelfieMode

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

openSelfieMode

openSelfieMode()

玩家通常通过屏幕右侧的“相机”按钮打开自拍模式,但此函数允许您通过代码打开它。在实现自定义按钮时,如下所示,应通过setHudButtonEnabled禁用默认按钮。此函数只能从LocalScript中调用。

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
local button = script.Parent
-- 移除默认按钮
SelfieMode.setHudButtonEnabled(false)
-- 连接自定义按钮
button.Activated:Connect(function()
SelfieMode.openSelfieMode()
end)

closeSelfieMode

closeSelfieMode()

玩家通常通过屏幕底部的**⊗**按钮关闭自拍模式,但此函数允许您通过代码关闭它。只能从LocalScript中调用。

LocalScript

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

isSelfieModeOpen

isSelfieModeOpen(): boolean

如果自拍模式因玩家操作或通过openSelfieMode调用而打开,则返回true。此函数只能从LocalScript中调用。

LocalScript

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

setHudButtonEnabled

setHudButtonEnabled()

设置是否显示用于进入自拍模式的默认按钮。在通过自定义UI按钮实现openSelfieMode时非常有用。此函数只能从LocalScript中调用。

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
local button = script.Parent
-- 移除默认按钮
SelfieMode.setHudButtonEnabled(false)
-- 连接自定义按钮
button.Activated:Connect(function()
SelfieMode.openSelfieMode()
end)

getAction

getAction(action: SelfieMode.Action): Action

通过SelfieMode.Action枚举获取Action类型。

LocalScript

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

activateAction

activateAction(action: SelfieMode.Action)

以编程方式激活默认的一个操作。这与玩家从操作栏开启操作时相同。只能从LocalScript中调用。

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
-- 激活“滤镜”操作
SelfieMode.activateAction(SelfieMode.Action.Filter)

deactivateAction

deactivateAction(action: SelfieMode.Action)

以编程方式停用默认的一个操作。这与玩家从操作栏关闭操作时相同。只能从LocalScript中调用。

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
-- 停用“滤镜”操作
SelfieMode.deactivateAction(SelfieMode.Action.Filter)

toggleAction

toggleAction(action: SelfieMode.Action): boolean

如果操作关闭,则切换操作为开启,或者如果操作开启,则切换为关闭。这与玩家从操作栏点击操作时相同。返回新的“已切换为开启”状态,作为布尔值。只能从LocalScript中调用。

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
local lockGazeAction = SelfieMode.getAction(SelfieMode.Action.LockGaze)
local isEnabled = SelfieMode.toggleAction(lockGazeAction)
if isEnabled then
print("已激活", lockGazeAction.name)
else
print("已停用", lockGazeAction.name)
end

setTheme

setTheme(theme: table)

配置自拍模式主题,包括文本大小、字体、按钮/工具提示颜色等。此函数只能从LocalScript中调用。

描述默认值
textSize所有文本的大小。16
font在所有UI中使用的字体(Enum.Font)。GothamMedium
padding用于布局UI元素的主要填充(UDim)。(0, 12)
paddingSmall用于在元素之间应用细微边距的较小填充(UDim)。(0, 6)
paddingScreen在屏幕边缘周围的填充,以给自拍模式留出空间(UDim)。(0, 24)
backgroundColor用于显示操作的条的背景颜色(Color3)。[0, 0, 0]
scrollBarColor模块的ScrollingFrame元素中使用的滚动条颜色(Color3)。[255, 255, 255]
LocalScript

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

setEnabled

setEnabled(isEnabled: boolean)

设置是否启用自拍模式。当禁用时,所有模块的UI将被移除,所有事件将被断开连接。此函数只能从LocalScript中调用。

LocalScript

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

事件

selfieModeOpened

当玩家打开自拍模式或调用openSelfieMode时触发。此事件只能在LocalScript中连接。

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.selfieModeOpened:Connect(function()
print("自拍模式已打开")
end)

selfieModeClosed

当玩家关闭自拍模式或调用closeSelfieMode时触发。此事件只能在LocalScript中连接。

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.selfieModeClosed:Connect(function()
print("自拍模式已关闭")
end)

actionActivated

参数
action: SelfieMode.Action已激活的操作

当激活某个操作时触发;这可能是主操作之一,如虚景深锁定视线隐藏其他;或者它可能是子操作,如滤镜姿势。连接的函数接收激活的操作。此事件只能在LocalScript中连接。

LocalScript

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

actionDeactivated

参数
action: SelfieMode.Action已停用的操作

当主操作或子操作被停用时触发。连接的函数接收已停用的操作。此事件只能在LocalScript中连接。

LocalScript

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

filterChanged

参数
newFilter: string新滤镜。
oldFilter: string先前的滤镜。

当应用或移除滤镜时触发。连接的函数接收新滤镜名称和旧滤镜名称。此事件只能在LocalScript中连接。

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.filterChanged:Connect(function(newFilter, oldFilter)
print("滤镜从", oldFilter, "更改为", newFilter)
end)

poseChanged

参数
newPose: string新姿势。
oldPose: string先前的姿势。

当应用或移除姿势时触发。连接的函数接收新姿势名称和旧姿势名称。此事件只能在LocalScript中连接。

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.poseChanged:Connect(function(newPose, oldPose)
print("姿势从", oldPose, "更改为", newPose)
end)
©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。