拍照是纪念美好经历的完美方式。PhotoBooth 开发模块 是一个易于使用的照片布景工具,允许玩家与代表他们经历的背景一起摆出独特的姿势。
模块使用
安装
要在体验中使用 PhotoBooth 模块:
确保选择了 模型 排序,然后单击 查看所有 按钮以获取 类别。
找到并点击 包 瓦片。
找到 照片亭 模块并点击它,或将其拖放到 3D 视图中。
在 资源管理器 窗口中,将整个 PhotoBooth 模型移动到 ReplicatedStorage 中。运行体验时,模块将开始运行。
定位亭子
模块附带一个 PhotoBooth 模型,您可以在 3D 世界中进行定位。玩家将与此模型进行交互,以设置照片。
在模块主文件夹的 Workspace 文件夹中找到 PhotoBooth 网格。
将其移动到顶层的 Workspace 层次结构中,并将其放置在所需位置。
配置
该模块已预配置为适用于大多数用例,但可以通过 configure 函数轻松自定义。例如,要更改照片底部的默认消息:
在 StarterPlayerScripts 中,创建一个新的 LocalScript 并将其重命名为 ConfigurePhotoBooth。
将以下代码粘贴到新脚本中。
LocalScript - ConfigurePhotoBoothlocal 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可见性
默认情况下,照片亭在布置照片时会隐藏所有 ScreenGuis 和 CoreGuis。如果您想覆盖此自动隐藏行为并以编程方式决定哪些 GUI 应该保持可见,请包含 hideOtherGuis 和 showOtherGuis 回调,并使用您自己的自定义逻辑进行响应。
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 可见性。