玩家已经在游戏中拍摄屏幕截图以纪念有趣的时刻。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 来实现这一点。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.configure({
disableCharacterMovement = true
})自拍模式操作
SelfieMode 附带以下 操作,您可以使用 activateAction、deactivateAction 和 toggleAction 函数来使用它们,或通过 actionActivated 和 actionDeactivated 事件进行检测。
景深
默认情况下,当玩家切换操作时,SelfieMode 显示一个通用的 景深 效果(背景的微妙模糊)。

要更改默认的景深效果,请在 configure 调用中将 depthOfFieldEffect 设置为您自己的 DepthOfFieldEffect 实例。
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 参考
类型
操作
每个操作由一个字典表示,包含以下键值对:
| 键 | 类型 | 描述 |
|---|---|---|
| name | string | 操作的名称,首先显示在工具提示中。 |
| description | string | 操作的描述,显示在工具提示中的 name 之后。 |
| icon | string | 操作图标的资产 ID。 |
| activeIcon | string | 操作在“活动”状态下的图标资产 ID。只能用于父操作,而不能用于子操作。 |
| actions | table | 可选的子操作列表。这允许您创建各种其他操作的子菜单。 |
| parent | Action | 操作的父级;这仅适用于子操作,并指向包含它的操作。 |
| onActivated | function | 可选的回调函数,当玩家激活操作或子操作时运行。通常,如果操作包含子操作,则仅需要为子操作定义回调,以便知道玩家激活了子操作,而不是简单地“展开”父操作。 |
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 函数一起使用。
| 名称 | 摘要 |
|---|---|
| DepthOfField | 对 景深 操作的引用。 |
| LockGaze | 对 锁定视线 操作的引用。 |
| HideOthers | 对 隐藏其他角色 操作的引用。 |
| Filter | 对 滤镜 操作的引用。 |
| Pose | 对 姿势 操作的引用。 |
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 实例,当玩家切换 景深 操作时出现。 |
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.configure({
disableCharacterMovement = true
})openSelfieMode
openSelfieMode()
玩家通常会通过屏幕右侧的“相机”按钮打开自拍模式,但此函数允许您通过代码打开它。当实现自定义按钮时,如下所示,您应该通过 setHudButtonEnabled 禁用默认按钮。此函数只能从 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 调用。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.closeSelfieMode()isSelfieModeOpen
isSelfieModeOpen(): boolean
如果自拍模式因玩家操作或通过 openSelfieMode 打开,则返回 true。此函数只能从 LocalScript 调用。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.openSelfieMode()
print(SelfieMode.isSelfieModeOpen())setHudButtonEnabled
setHudButtonEnabled()
设置是否显示进入自拍模式的默认按钮。在通过自定义 UI 按钮实现 openSelfieMode 时非常有用。此函数只能从 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 类型。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
local lockGazeAction = SelfieMode.getAction(SelfieMode.Action.LockGaze)activateAction
activateAction(action: SelfieMode.Action)
以编程方式激活默认 操作 之一。这与玩家从操作栏中切换操作时的效果相同。只能从 LocalScript 调用。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
-- 激活 "滤镜" 操作
SelfieMode.activateAction(SelfieMode.Action.Filter)deactivateAction
deactivateAction(action: SelfieMode.Action)
以编程方式停用默认 操作 之一。这与玩家从操作栏中切换操作关闭时的效果相同。只能从 LocalScript 调用。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
-- 停用 "滤镜" 操作
SelfieMode.deactivateAction(SelfieMode.Action.Filter)toggleAction
toggleAction(action: SelfieMode.Action): boolean
如果操作关闭,则打开 操作;如果操作打开,则关闭它。这与玩家从操作栏中点击操作时的效果相同。返回新的“已切换开启”状态,作为布尔值。只能从 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)
endsetTheme
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] |
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 调用。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.setEnabled(false)事件
selfieModeOpened
当玩家打开自拍模式或调用 openSelfieMode 时触发。此事件只能在 LocalScript 中连接。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.selfieModeOpened:Connect(function()
print("自拍模式已打开")
end)selfieModeClosed
当玩家关闭自拍模式或调用 closeSelfieMode 时触发。此事件只能在 LocalScript 中连接。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.selfieModeClosed:Connect(function()
print("自拍模式已关闭")
end)actionActivated
| 参数 | |
|---|---|
| action: SelfieMode.Action | 已激活的 Action。 |
当激活一个操作时触发;这可能是主要操作之一,如 景深、锁定视线 或 隐藏其他角色;或者可能是子操作,如 滤镜 或 姿势。连接的函数接收已激活的 Action。此事件只能在 LocalScript 中连接。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.actionActivated:Connect(function(action)
print(action.name, "已激活")
end)actionDeactivated
| 参数 | |
|---|---|
| action: SelfieMode.Action | 已停用的 Action。 |
当主要操作或子操作被停用时触发。连接的函数接收已停用的 Action。此事件只能在 LocalScript 中连接。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.actionDeactivated:Connect(function(action)
print(action.name, "已停用")
end)filterChanged
当应用或移除 滤镜 时触发。连接的函数接收新滤镜名称和旧滤镜名称。此事件只能在 LocalScript 中连接。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.filterChanged:Connect(function(newFilter, oldFilter)
print("滤镜从", oldFilter, "更改为", newFilter)
end)poseChanged
当应用或移除 姿势 时触发。连接的函数接收新姿势名称和旧姿势名称。此事件只能在 LocalScript 中连接。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SelfieMode = require(ReplicatedStorage.SelfieMode)
SelfieMode.poseChanged:Connect(function(newPose, oldPose)
print("姿势从", oldPose, "更改为", newPose)
end)