照片亭

*此内容使用人工智能(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()
-- 隐藏所有开发者定义的屏幕 GUIs,除非它们是带有属性的
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
-- 隐藏特定核心 GUIs
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
PhotoBooth.showOtherGuis(function()
-- 显示所有被隐藏的开发者定义的屏幕 GUIs
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- 显示所有被隐藏的特定核心 GUIs
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或其中的元素。照片亭使用的GUIs具有属性ShowInPhotoBooth设置为true。有关详细信息和示例代码,请参见GUI可见性

showOtherGuis

showOtherGuis(callback: function)

此回调在打印输出关闭后运行,让您重新启用整个ScreenGuis或其中的元素。照片亭使用的GUIs具有属性ShowInPhotoBooth设置为true。有关详细信息和示例代码,请参见GUI可见性

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