拍照是纪念一场精彩游戏的完美方式。PhotoBooth 开发者模块 是一个易于使用的照片布景工具,允许玩家与代表他们体验的背景一起摆出独特的姿势。
模块使用
安装
要在游戏中使用 PhotoBooth 模块:
从 Studio 的 窗口 菜单或 主页 选项卡工具栏中,打开 工具箱 并选择 创作者商店 选项卡。

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

找到并点击 包 瓦片。
找到 照片亭 模块并点击它,或将其拖放到 3D 视图中。

在 资源管理器 窗口中,将整个 PhotoBooth 模型移动到 ReplicatedStorage 中。运行游戏时,模块将开始运行。
定位亭子
该模块附带一个 PhotoBooth 模型,您可以在 3D 世界中定位。这个模型是玩家与之互动以设置照片的对象。
在模块的主文件夹的 Workspace 文件夹中找到 PhotoBooth 网格。

将其移动到顶层 Workspace 层次结构中,并将其放置在所需位置。

配置
该模块预配置为适用于大多数用例,但可以通过 配置 函数轻松自定义。例如,要更改照片底部的默认消息:
在 StarterPlayerScripts 中,创建一个新的 LocalScript 并将其重命名为 ConfigurePhotoBooth。

将以下代码粘贴到新脚本中。
LocalScript - ConfigurePhotoBoothlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage.PhotoBooth)PhotoBooth.configure({frameMessage = "第一次照片亭捕捉!",})
连接事件
每当照片亭向本地客户端显示新屏幕时,都会触发相应的事件。这些事件可以在 LocalScript 中连接,以便您可以用自己的自定义逻辑进行响应。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.countdownStarted:Connect(function()
print("倒计时已开始")
end)
PhotoBooth.printoutShown:Connect(function()
print("打印输出正在显示")
end)
PhotoBooth.promptShown:Connect(function()
print("相机提示正在显示")
end)GUI 可见性
默认情况下,照片亭在拍照时会隐藏所有 ScreenGuis 和 CoreGuis。如果您想覆盖此自动隐藏行为并以编程方式决定哪些 GUI 应保持可见,请包含 hideOtherGuis 和 showOtherGuis 回调,并用您自己的自定义逻辑进行响应。
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- 创建一个不会被隐藏的屏幕 GUI
local specialGuiInstance = Instance.new("ScreenGui")
-- 将屏幕 GUI 绘制在照片亭 GUI 之上
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- 在屏幕 GUI 上设置属性以防止隐藏
specialGuiInstance:SetAttribute("ShowInPhotoBooth", true)
-- 向 GUI 添加文本标签
local specialLabel = Instance.new("TextLabel")
specialLabel.Size = UDim2.fromScale(1, 0.1)
specialLabel.Text = "拍照时保持可见"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
PhotoBooth.hideOtherGuis(function()
-- 隐藏所有开发者定义的屏幕 GUI,除了那些标记为属性的
local instances = playerGui:GetChildren()
for _, instance in instances do
if instance:IsA("ScreenGui") and not instance:GetAttribute("ShowInPhotoBooth") and instance.Enabled then
instance.Enabled = false
table.insert(hiddenInstances, instance)
end
end
-- 隐藏特定核心 GUI
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
PhotoBooth.showOtherGuis(function()
-- 显示所有被隐藏的开发者定义的屏幕 GUI
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- 显示被隐藏的特定核心 GUI
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)API 参考
函数
configure
configure(config: table)
通过 config 表中的以下键/值覆盖默认配置选项。此函数只能从 LocalScript 中调用。
| 键 | 描述 | 默认值 |
|---|---|---|
| frameMessage | 显示在照片底部的消息。其持续时间可以通过 fadeUiDelay 属性控制。 | "使用您的设备拍摄屏幕截图并分享!" |
| fadeUiDelay | 在淡出之前显示框架消息的时间,以秒为单位。设置为负数以永不淡出。 | 3 |
| closeButtonImage | 用于关闭照片按钮的图像,放置在 closeButtonBackgroundImage 图像之上。 | "rbxassetid://7027440823" |
| closeButtonBackgroundImage | 用于关闭照片按钮的背景图像。 | "rbxassetid://7027440891" |
| cameraLandscapePosition | 照片亭相机在拍摄横向照片时,位于角色前方和上方的距离 (Vector2)。 | (5, 2) |
| cameraPortraitPosition | 照片亭相机在拍摄纵向照片时,位于角色前方和上方的距离 (Vector2)。 | (10, 1) |
| countdownFont | 倒计时中数字使用的字体 (Enum.Font)。 | GothamBlack |
| countdownTextColor | 倒计时中数字的颜色 (Color3)。 | [255, 255, 255] |
| printoutCharacterPosition | 打印输出显示时角色在屏幕上的位置 (UDim2)。 | (0.5, 0, 0.5, 0) |
| printoutCharacterSize | 角色在打印输出中占用的屏幕空间量 (UDim2)。 | (1, 0, 1, 0) |
| characterAnimation | 角色在照片中采取的动画的资产 ID,暂停在其起始帧。 | "rbxassetid://6899663224" |
| filterImage | 应用于照片的过滤器图像。如果为 nil,将使用默认过滤器,使图像边缘变暗。 | nil |
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.configure({
frameMessage = "多么酷的姿势!",
fadeUiDelay = 5,
maxActivationDistance = 5,
printoutCharacterSize = UDim2.fromScale(1.5, 1.5),
})setBackgrounds
setBackgrounds(backgrounds: table)
覆盖照片亭提供的默认背景。背景图像应为 16:9 的宽高比 (1024×576),以获得最佳体验,并且其资产 ID 应包含在背景数组中。可以提供 1–4 (包含) 个背景。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.setBackgrounds({
"rbxassetid://7018713114",
"rbxassetid://950538356",
})事件
countdownStarted
倒计时开始时触发。此事件只能在 LocalScript 中连接。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.countdownStarted:Connect(function()
print("倒计时已开始")
end)printoutShown
打印输出显示给用户时触发。此事件只能在 LocalScript 中连接。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.printoutShown:Connect(function()
print("打印输出正在显示")
end)promptShown
打印输出关闭并且相机按钮再次显示时触发。此事件只能在 LocalScript 中连接。
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.promptShown:Connect(function()
print("相机提示正在显示")
end)回调
hideOtherGuis
hideOtherGuis(callback: function)
此回调在打印输出显示之前立即运行,让您在打印输出显示之前禁用整个 ScreenGuis 或其中的元素。照片亭使用的 GUI 具有属性 ShowInPhotoBooth 设置为 true。有关详细信息和示例代码,请参见 GUI 可见性。
showOtherGuis
showOtherGuis(callback: function)
此回调在打印输出关闭后运行,让您重新启用整个 ScreenGuis 或其中的元素。照片亭使用的 GUI 具有属性 ShowInPhotoBooth 设置为 true。有关详细信息和示例代码,请参见 GUI 可见性。