照片亭

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

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

模块使用

安装

要在体验中使用 PhotoBooth 模块:

  1. 视图 选项卡中,打开 工具箱,并选择 创作者商店 选项卡。

    Studio中的工具箱切换按钮
  2. 确保选择了 模型 排序,然后单击 查看所有 按钮以获取 类别

  3. 找到并点击 瓦片。

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

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

定位亭子

模块附带一个 PhotoBooth 模型,您可以在 3D 世界中进行定位。玩家将与此模型进行交互,以设置照片。

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

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

配置

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

  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×768) 以获得最佳体验,并且它们的资产 ID 应包含在背景数组中。可以提供 1-4(包括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 可见性