照片亭

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

拍照是纪念一场精彩游戏的完美方式。PhotoBooth 开发者模块 是一个易于使用的照片布景工具,允许玩家与代表他们体验的背景一起摆出独特的姿势。

模块使用

安装

要在游戏中使用 PhotoBooth 模块:

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

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

  3. 找到并点击 瓦片。

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

  5. 资源管理器 窗口中,将整个 PhotoBooth 模型移动到 ReplicatedStorage 中。运行游戏时,模块将开始运行。

定位亭子

该模块附带一个 PhotoBooth 模型,您可以在 3D 世界中定位。这个模型是玩家与之互动以设置照片的对象。

  1. 在模块的主文件夹的 Workspace 文件夹中找到 PhotoBooth 网格。

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

配置

该模块预配置为适用于大多数用例,但可以通过 配置 函数轻松自定义。例如,要更改照片底部的默认消息:

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

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

    LocalScript - ConfigurePhotoBooth
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
    PhotoBooth.configure({
    frameMessage = "第一次照片亭捕捉!",
    })

连接事件

每当照片亭向本地客户端显示新屏幕时,都会触发相应的事件。这些事件可以在 LocalScript 中连接,以便您可以用自己的自定义逻辑进行响应。

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 可见性

默认情况下,照片亭在拍照时会隐藏所有 ScreenGuisCoreGuis。如果您想覆盖此自动隐藏行为并以编程方式决定哪些 GUI 应保持可见,请包含 hideOtherGuisshowOtherGuis 回调,并用您自己的自定义逻辑进行响应。

LocalScript
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
LocalScript - ConfigurePhotoBooth
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 (包含) 个背景。

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.setBackgrounds({
"rbxassetid://7018713114",
"rbxassetid://950538356",
})

事件

countdownStarted

倒计时开始时触发。此事件只能在 LocalScript 中连接。

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.countdownStarted:Connect(function()
print("倒计时已开始")
end)

printoutShown

打印输出显示给用户时触发。此事件只能在 LocalScript 中连接。

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.printoutShown:Connect(function()
print("打印输出正在显示")
end)

promptShown

打印输出关闭并且相机按钮再次显示时触发。此事件只能在 LocalScript 中连接。

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 可见性

©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。