Chụp ảnh là cách hoàn hảo để kỷ niệm một trải nghiệm tuyệt vời. Mô-đun PhotoBooth mô-đun phát triển là một công cụ tạo ảnh dễ sử dụng, cho phép người chơi tạo dáng độc đáo với một phông nền đại diện cho trải nghiệm của họ.
Cách sử dụng mô-đun
Cài đặt
Để sử dụng mô-đun PhotoBooth trong một trải nghiệm:
Từ menu Cửa sổ của Studio hoặc thanh công cụ tab Trang chính, mở Hộp công cụ và chọn tab Cửa hàng của nhà phát triển.

Đảm bảo rằng bạn đã chọn sắp xếp Mô hình, sau đó nhấn nút Xem Tất cả cho Danh mục.

Tìm kiếm và nhấp vào ô Gói.
Tìm mô-đun Photo Booth và nhấp vào nó, hoặc kéo và thả nó vào chế độ xem 3D.

Trong cửa sổ Explorer, di chuyển toàn bộ mô hình PhotoBooth vào ReplicatedStorage. Khi chạy trải nghiệm, mô-đun sẽ bắt đầu hoạt động.
Đặt vị trí khu vực chụp ảnh
Mô-đun đi kèm với một mô hình PhotoBooth mà bạn có thể đặt trong thế giới 3D. Mô hình này là thứ mà người chơi sẽ tương tác để thiết lập việc chụp ảnh.
Tìm kiếm mô hình PhotoBooth trong thư mục Workspace của thư mục chính của mô-đun.

Di chuyển nó vào cấu trúc thư mục Workspace cấp cao nhất và đặt nó ở vị trí mong muốn.

Cấu hình
Mô-đun được cấu hình sẵn để hoạt động cho hầu hết các trường hợp sử dụng, nhưng nó có thể dễ dàng tùy chỉnh thông qua hàm configure. Ví dụ, để thay đổi thông điệp mặc định ở dưới cùng của bức ảnh:
Trong StarterPlayerScripts, tạo một LocalScript mới và đổi tên nó thành ConfigurePhotoBooth.

Dán mã sau vào trong script mới.
LocalScript - ConfigurePhotoBoothlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage.PhotoBooth)PhotoBooth.configure({frameMessage = "Bức ảnh chụp đầu tiên!",})
Kết nối với sự kiện
Mỗi khi khu vực chụp ảnh hiển thị một màn hình mới cho một khách hàng địa phương, một sự kiện tương ứng sẽ được kích hoạt. Những sự kiện này có thể được kết nối trong một LocalScript để bạn có thể phản hồi bằng logic tùy chỉnh của riêng mình.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.countdownStarted:Connect(function()
print("Đếm ngược đã bắt đầu")
end)
PhotoBooth.printoutShown:Connect(function()
print("Bản in đang hiển thị")
end)
PhotoBooth.promptShown:Connect(function()
print("Yêu cầu camera đang hiển thị")
end)
Tính năng hiển thị GUI
Theo mặc định, khu vực chụp ảnh ẩn tất cả các ScreenGuis và CoreGuis khi một bức ảnh được thiết lập. Nếu bạn muốn ghi đè hành vi tự động ẩn này và quyết định bằng lập trình cái nào GUIs nên giữ lại sự hiển thị, hãy bao gồm các callback hideOtherGuis và showOtherGuis và phản hồi bằng logic tùy chỉnh của riêng bạn.
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 = {}
-- Tạo một biến thể GUI mà không bị ẩn
local specialGuiInstance = Instance.new("ScreenGui")
-- Đặt GUI màn hình lên trên GUI khu vực chụp ảnh
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Đặt thuộc tính trên GUI màn hình để ngăn việc ẩn
specialGuiInstance:SetAttribute("ShowInPhotoBooth", true)
-- Thêm nhãn văn bản vào GUI
local specialLabel = Instance.new("TextLabel")
specialLabel.Size = UDim2.fromScale(1, 0.1)
specialLabel.Text = "Vẫn hiển thị khi chụp ảnh"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
PhotoBooth.hideOtherGuis(function()
-- Ẩn tất cả GUI màn hình do nhà phát triển xác định ngoại trừ những cái được đánh dấu bằng thuộc tính
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
-- Ẩn các GUI cốt lõi cụ thể
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
PhotoBooth.showOtherGuis(function()
-- Hiện tất cả GUI màn hình do nhà phát triển xác định bị ẩn
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Hiện các GUI cốt lõi cụ thể đã bị ẩn
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
Tham khảo API
Hàm
configure
configure(config: table)
Ghi đè các tùy chọn cấu hình mặc định thông qua các khóa/giá trị sau trong bảng config. Hàm này chỉ có thể được gọi từ một LocalScript.
| Khóa | Mô tả | Mặc định |
|---|---|---|
| frameMessage | Thông điệp hiển thị ở dưới cùng của bức ảnh. Thời gian hiển thị của nó có thể được điều khiển qua thuộc tính fadeUiDelay. | "Sử dụng thiết bị của bạn để chụp ảnh màn hình và chia sẻ!" |
| fadeUiDelay | Thời gian hiển thị thông điệp khung trước khi nó biến mất, tính bằng giây. Đặt thành số âm để không bao giờ biến mất. | 3 |
| closeButtonImage | Hình ảnh được sử dụng cho nút đóng bức ảnh, được đặt lên trên hình ảnh closeButtonBackgroundImage. | "rbxassetid://7027440823" |
| closeButtonBackgroundImage | Hình ảnh nền để sử dụng cho nút đóng bức ảnh. | "rbxassetid://7027440891" |
| cameraLandscapePosition | Khoảng cách của camera khu vực chụp ảnh, ở phía trước và cao hơn từ nhân vật, khi chụp ảnh theo chế độ phong cảnh (Vector2). | (5, 2) |
| cameraPortraitPosition | Khoảng cách của camera khu vực chụp ảnh, ở phía trước và cao hơn từ nhân vật, khi chụp ảnh theo chế độ chân dung (Vector2). | (10, 1) |
| countdownFont | Font để sử dụng cho các số trong đồng hồ đếm ngược (Enum.Font). | GothamBlack |
| countdownTextColor | Màu của các số trong đồng hồ đếm ngược (Color3). | [255, 255, 255] |
| printoutCharacterPosition | Vị trí của nhân vật trên màn hình khi bản in đang hiển thị (UDim2). | (0.5, 0, 0.5, 0) |
| printoutCharacterSize | Khối lượng không gian màn hình mà nhân vật chiếm trong bản in (UDim2). | (1, 0, 1, 0) |
| characterAnimation | ID tài sản của hoạt ảnh mà nhân vật thực hiện trong bức ảnh, dừng lại ở khung bắt đầu của nó. | "rbxassetid://6899663224" |
| filterImage | Hình ảnh áp dụng lên bức ảnh như một bộ lọc. Nếu nil, một bộ lọc mặc định làm tối các cạnh của hình ảnh sẽ được sử dụng. | nil |
LocalScript - ConfigurePhotoBoothlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage.PhotoBooth)PhotoBooth.configure({frameMessage = "Thật là một dáng vẻ tuyệt vời!",fadeUiDelay = 5,maxActivationDistance = 5,printoutCharacterSize = UDim2.fromScale(1.5, 1.5),})
setBackgrounds
setBackgrounds(backgrounds: table)
Ghi đè các phông nền mặc định được cung cấp bởi khu vực chụp ảnh. Hình ảnh phông nền nên có tỷ lệ 16:9 (1024×576) để có trải nghiệm tối ưu và ID tài sản của chúng nên được bao gồm trong mảng phông nền. Có thể cung cấp từ 1 đến 4 phông nền (bao gồm).
LocalScriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage.PhotoBooth)PhotoBooth.setBackgrounds({"rbxassetid://7018713114","rbxassetid://950538356",})
Sự kiện
countdownStarted
Kích hoạt khi đồng hồ đếm ngược bắt đầu. Sự kiện này chỉ có thể được kết nối trong một LocalScript.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.countdownStarted:Connect(function()
print("Đếm ngược đã bắt đầu")
end)
printoutShown
Kích hoạt khi bản in được hiển thị cho người dùng. Sự kiện này chỉ có thể được kết nối trong một LocalScript.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.printoutShown:Connect(function()
print("Bản in đang hiển thị")
end)
promptShown
Kích hoạt khi bản in bị đóng và nút camera lại hiển thị. Sự kiện này chỉ có thể được kết nối trong một LocalScript.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage.PhotoBooth)
PhotoBooth.promptShown:Connect(function()
print("Yêu cầu camera đang hiển thị")
end)
Callbacks
hideOtherGuis
hideOtherGuis(callback: function)
Callback này chạy ngay trước khi bản in được hiển thị, cho phép bạn vô hiệu hóa toàn bộ ScreenGuis hoặc các phần tử bên trong chúng trước khi bản in được hiển thị. Các GUI được sử dụng bởi khu vực chụp ảnh có thuộc tính ShowInPhotoBooth được đặt thành true. Xem Tính năng hiển thị GUI để biết chi tiết và mã ví dụ.
showOtherGuis
showOtherGuis(callback: function)
Callback này chạy sau khi bản in đã được đóng, cho phép bạn bật lại toàn bộ ScreenGuis hoặc các phần tử bên trong chúng. Các GUI được sử dụng bởi khu vực chụp ảnh có thuộc tính ShowInPhotoBooth được đặt thành true. Xem Tính năng hiển thị GUI để biết chi tiết và mã ví dụ.