玩家已经在体验中截图以纪念有趣的时刻。SelfieMode 开发者模块允许玩家捕捉更清晰的瞬间记忆,排除聊天窗口和玩家列表,同时支持滤镜效果、隐藏其他角色和摆姿势。
模块使用
安装
要在体验中使用SelfieMode模块:
从Studio的窗口菜单或主页选项卡工具栏打开工具箱,然后选择创作者商店选项卡。

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

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

在资源管理器窗口中,将整个SelfieMode包移动到ReplicatedStorage。在运行体验时,该模块将开始运行。
配置
该模块预配置以适用于大多数用例,但您可以通过configure函数轻松自定义它。
在StarterPlayerScripts中,创建一个新的LocalScript并将其重命名为ConfigureSelfieMode。
将以下代码粘贴到新脚本中。
LocalScript - ConfigureSelfieModelocal ReplicatedStorage = game:GetService("ReplicatedStorage")local SelfieMode = require(ReplicatedStorage.SelfieMode)SelfieMode.configure({disableCharacterMovement = true})
角色移动
在自拍模式中,防止玩家的角色移动可能是有利的。您可以通过在configure调用中将disableCharacterMovement设置为true来实现这一点。
LocalScript - ConfigureSelfieModelocal ReplicatedStorage = game:GetService("ReplicatedStorage")local SelfieMode = require(ReplicatedStorage.SelfieMode)SelfieMode.configure({disableCharacterMovement = true})
自拍模式操作
SelfieMode包含以下操作,您可以通过activateAction、deactivateAction和toggleAction函数使用它们,或者通过actionActivated和actionDeactivated事件检测它们。
虚景深
默认情况下,当玩家切换操作时,SelfieMode显示一个通用的虚景深效果(背景的微妙模糊)。

要更改默认的虚景深效果,请在configure调用中将depthOfFieldEffect设置为您自己的DepthOfFieldEffect实例。
LocalScript - ConfigureSelfieModelocal ReplicatedStorage = game:GetService("ReplicatedStorage")local SelfieMode = require(ReplicatedStorage.SelfieMode)local customDepthOfField = Instance.new("DepthOfFieldEffect")customDepthOfField.NearIntensity = 0customDepthOfField.FarIntensity = 1customDepthOfField.FocusDistance = 5customDepthOfField.InFocusRadius = 5SelfieMode.configure({depthOfFieldEffect = customDepthOfField})
锁定视线
锁定视线开关使玩家的角色在摆自拍姿势时能够朝向相机,且在颈部可以转动的合理范围内。
隐藏其他
默认情况下,其他角色在玩家的角色旁边可见。玩家可以通过单击隐藏其他按钮获得完美的单人照片。当切换开启时,其他角色将逐渐淡出视野,并在操作关闭之前保持不可见。
滤镜
滤镜操作允许玩家从流行、柔和、古董、可爱、戏剧性和单色等选项中应用预设滤镜。

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

API 参考
类型
操作
每个操作由一个包含以下键值对的字典表示:
| 键 | 类型 | 描述 |
|---|---|---|
| name | string | 操作名称,在工具提示中首先显示。 |
| description | string | 操作描述,在工具提示中显示在name之后。 |
| icon | string | 操作图标的资产ID。 |
| activeIcon | string | 操作在“活动”状态下的图标资产ID。仅可用于父操作,而不能用于子操作。 |
| actions | table | 可选的子操作列表。这允许您创建多个其他操作的子菜单。 |
| parent | Action | 操作的父级;这仅适用于子操作,并指向包含它的操作。 |
| onActivated | function | 可选的回调函数,当玩家激活操作或子操作时运行。通常,如果操作包含子操作,仅需要为子操作定义回调,以便知道玩家激活了子操作,而不仅仅是“展开”父操作。 |
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包含几个操作。您可以将此枚举与activateAction、deactivateAction和toggleAction函数一起使用。
LocalScriptlocal 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 - ConfigureSelfieModelocal 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中调用。
LocalScriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local SelfieMode = require(ReplicatedStorage.SelfieMode)SelfieMode.closeSelfieMode()
isSelfieModeOpen
isSelfieModeOpen(): boolean
如果自拍模式因玩家操作或通过openSelfieMode调用而打开,则返回true。此函数只能从LocalScript中调用。
LocalScriptlocal 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类型。
LocalScriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local SelfieMode = require(ReplicatedStorage.SelfieMode)local lockGazeAction = SelfieMode.getAction(SelfieMode.Action.LockGaze)
activateAction
activateAction(action: SelfieMode.Action)
以编程方式激活默认的一个操作。这与玩家从操作栏开启操作时相同。只能从LocalScript中调用。
LocalScriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local SelfieMode = require(ReplicatedStorage.SelfieMode)-- 激活“滤镜”操作SelfieMode.activateAction(SelfieMode.Action.Filter)
deactivateAction
deactivateAction(action: SelfieMode.Action)
以编程方式停用默认的一个操作。这与玩家从操作栏关闭操作时相同。只能从LocalScript中调用。
LocalScriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local SelfieMode = require(ReplicatedStorage.SelfieMode)-- 停用“滤镜”操作SelfieMode.deactivateAction(SelfieMode.Action.Filter)
toggleAction
toggleAction(action: SelfieMode.Action): boolean
如果操作关闭,则切换操作为开启,或者如果操作开启,则切换为关闭。这与玩家从操作栏点击操作时相同。返回新的“已切换为开启”状态,作为布尔值。只能从LocalScript中调用。
LocalScriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local SelfieMode = require(ReplicatedStorage.SelfieMode)local lockGazeAction = SelfieMode.getAction(SelfieMode.Action.LockGaze)local isEnabled = SelfieMode.toggleAction(lockGazeAction)if isEnabled thenprint("已激活", lockGazeAction.name)elseprint("已停用", 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] |
LocalScriptlocal 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中调用。
LocalScriptlocal 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
当应用或移除滤镜时触发。连接的函数接收新滤镜名称和旧滤镜名称。此事件只能在LocalScript中连接。
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.filterChanged:Connect(function(newFilter, oldFilter)
print("滤镜从", oldFilter, "更改为", newFilter)
end)
poseChanged
当应用或移除姿势时触发。连接的函数接收新姿势名称和旧姿势名称。此事件只能在LocalScript中连接。
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.poseChanged:Connect(function(newPose, oldPose)
print("姿势从", oldPose, "更改为", newPose)
end)