การถ่ายภาพเป็นวิธีที่สมบูรณ์แบบในการจดจำประสบการณ์ที่ยอดเยี่ยม โมดูล PhotoBooth สำหรับนักพัฒนา เป็นเครื่องมือจัดเตรียมภาพถ่ายที่ใช้งานง่ายที่ช่วยให้ผู้เล่นสามารถโพสต์ท่าที่ไม่ซ้ำใครกับพื้นหลังที่แสดงถึงประสบการณ์ของพวกเขา
การใช้งานโมดูล
การติดตั้ง
ในการใช้โมดูล PhotoBooth ในประสบการณ์:
จากเมนู หน้าต่าง ของ Studio หรือแถบเครื่องมือในแท็บ หน้าแรก, เปิด Toolbox และเลือกแท็บ Creator Store

ตรวจสอบให้แน่ใจว่ามีการเลือกการจัดเรียง โมเดล แล้วคลิกที่ปุ่ม ดูทั้งหมด สำหรับ หมวดหมู่

ค้นหาและคลิกที่ป้าย Packages
ค้นหาโมดูล Photo Booth แล้วคลิก หรือให้ลากแล้ววางลงในมุมมอง 3D

ในหน้าต่าง Explorer, ย้ายโมเดล PhotoBooth ทั้งหมดไปยัง ReplicatedStorage. เมื่อรันประสบการณ์โมดูลจะเริ่มทำงาน
การวางบูธ
โมดูลมาพร้อมกับโมเดล PhotoBooth หนึ่งโมเดลที่คุณสามารถจัดวางในโลก 3D โมเดลนี้คือสิ่งที่ผู้เล่นจะใช้งานเพื่อตั้งค่าภาพถ่าย
ค้นหาเมช PhotoBooth ภายในโฟลเดอร์ Workspace ของโฟลเดอร์หลักของโมดูล

ย้ายมันไปยังลำดับชั้น 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 | Asset ID ของการเคลื่อนไหวที่ตัวละครใช้ในภาพ ถูกรอที่เฟรมเริ่มต้นของมัน | "rbxassetid://6899663224" |
| filterImage | ภาพที่ใช้เป็นฟิลเตอร์ที่ทับลงไปบนภาพ หาก nil, จะใช้ฟิลเตอร์เริ่มต้นที่จะทำให้ขอบของภาพมืดลง | nil |
LocalScript - ConfigurePhotoBoothlocal 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 (รวมเป็น)
LocalScriptlocal 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)
การเรียกกลับนี้จะทำงานทันทีที่การพิมพ์ปรากฏให้เห็น ทำให้คุณปิด GUI ScreenGuis หรือองค์ประกอบภายในก่อนที่การพิมพ์จะปรากฏ GUI ที่ใช้โดยบูธถ่ายภาพมีแอตทริบิวต์ ShowInPhotoBooth ถูกตั้งค่าเป็น true ดูรายละเอียดและตัวอย่างโค้ดใน GUI Visibility.
showOtherGuis
showOtherGuis(callback: function)
การเรียกกลับนี้จะทำงานหลังจากการพิมพ์ถูกปิด ทำให้คุณเปิดใช้งาน GUI ScreenGuis หรือองค์ประกอบภายในได้อีกครั้ง GUI ที่ใช้โดยบูธถ่ายภาพมีแอตทริบิวต์ ShowInPhotoBooth ถูกตั้งค่าเป็น true ดูรายละเอียดและตัวอย่างโค้ดใน GUI Visibility.