การถ่ายรูปเป็นวิธีที่สมบูรณ์แบบในการระลึกถึงประสบการณ์ที่ดีโมดูลนักพัฒนา PhotoBooth เป็นเครื่องมือจัดฉากภาพที่ใช้งานง่ายซึ่งช่วยให้ผู้เล่นโจมตีท่าทางที่ไม่ซ้ำกันด้วยพื้นหลังที่แทนที่ประสบการณ์ของพวกเขา
การใช้งานโมดูล
การติดตั้ง
เพื่อใช้โมดูล PhotoBooth ในประสบการณ์:
ตรวจสอบให้แน่ใจว่าการจัดเรียง รูปแบบ ถูกเลือกแล้วคลิกที่ปุ่ม ดูทั้งหมด สำหรับ หมวดหมู่
ค้นหาและคลิกที่แท็บ โมดูลพัฒนา
ค้นหาโมดูล บูธถ่ายภาพ และคลิกหรือวางลงในมุมมอง 3D
ในหน้าต่าง สํารวจ ย้ายรูปแบบ PhotoBooth ทั้งหมดไปยัง ServerScriptService เมื่อเรียกใช้ประสบการณ์แล้ว โมดูลจะแจกจ่ายตัวเองไปยังบริการต่างๆ และเริ่มทำงาน
ตำแหน่งบูธ
โมดูลมาพร้อมกับโมเดล PhotoBooth หนึ่งที่คุณสามารถตำแหน่งในโลก 3D ได้รูปแบบนี้คือสิ่งที่ผู้เล่นจะโต้ตอบเพื่อตั้งค่าภาพ
ค้นหาเมช บูธภาพ ภายในโฟลเดอร์ พื้นที่ทำงาน ของโฟลเดอร์หลักของโมดูล
ย้ายไปยังชั้นสูงสุดของ พื้นที่ทำงาน และตำแหน่งที่ต้องการ
การกำหนดค่า
โมดูลได้รับการกำหนดค่าล่วงหน้าเพื่อทำงานสำหรับกรณีการใช้งานส่วนใหญ่ แต่สามารถปรับแต่งได้ง่ายผ่านฟังก์ชัน กำหนดค่าตัวอย่างเช่น เพื่อเปลี่ยนข้อความเริ่มต้นที่ด้านล่างของภาพ:
ใน StarterPlayerScripts สร้างใหม่ LocalScript และเปลี่ยนชื่อเป็น กำหนดค่าบูธภาพ
ใส่โค้ดต่อไปนี้ลงในสคริปต์ใหม่
สคริปท์ท้องถิ่น - กำหนดค่าบูธถ่ายภาพlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))PhotoBooth.configure({frameMessage = "First Photo Booth Capture!",})
เชื่อมต่อกับอีเวนต์
ทุกครั้งที่บูธภาพแสดงหน้าจอใหม่ให้กับลูกค้าท้องถิ่น จะมีการเปิดกิจกรรมที่เกี่ยวข้องเหตุการณ์เหล่านี้สามารถเชื่อมต่อใน LocalScript เพื่อให้คุณสามารถตอบสนองด้วยโลจิสติกของคุณเองได้
สคริปท์ท้องถิ่น
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.countdownStarted:Connect(function()
print("The countdown has started")
end)
PhotoBooth.printoutShown:Connect(function()
print("The printout is showing")
end)
PhotoBooth.promptShown:Connect(function()
print("The camera prompt is showing")
end)
การมองเห็น GUI
โดยค่าเริ่มต้นบูธภาพจะซ่อนทั้งหมด ScreenGuis และ CoreGuis เมื่อมีการจัดฉากภาพหากคุณต้องการยกเลิกพฤติกรรมการซ่อนอัตโนมัตินี้และตัดสินใจโดยเป็นระบบว่า GUI ใดที่ควรยังคงมองเห็นได้ รวมถึงการโทรกลับ hideOtherGuis และ showOtherGuis และตอบสนองด้วยโลจิสติกของคุณเอง
สคริปท์ท้องถิ่น
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("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 = "Remains visible when taking a photo"
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
ฟังก์ชัน
กำหนดค่า
กำหนดค่า (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 |
สคริปท์ท้องถิ่น - กำหนดค่าบูธถ่ายภาพ
local ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))PhotoBooth.configure({frameMessage = "What a cool pose!",fadeUiDelay = 5,maxActivationDistance = 5,printoutCharacterSize = UDim2.fromScale(1.5, 1.5),})
ตั้งค่าพื้นหลัง
ตั้งค่าพื้นหลัง(พื้นหลัง: table )
แทนที่พื้นหลังเริ่มต้นที่ให้โดยบูธถ่ายภาพภาพพื้นหลังควรมีอัตราส่วน 16:9 (1024×768) เพื่อประสบการณ์ที่ดีที่สุดและรหัสสินค้าของพวกเขาควรรวมอยู่ในคลังภาพพื้นหลังสามารถให้พื้นหลัง 1–4 (รวม) ได้
สคริปท์ท้องถิ่น
local ReplicatedStorage = game:GetService("ReplicatedStorage")local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))PhotoBooth.setBackgrounds({"rbxassetid://7018713114","rbxassetid://950538356",})
อีเวนต์
เริ่มนับถอยหลัง
จะเกิดไฟไหม้เมื่อการนับถอยหลังเริ่มต้น อีเวนต์นี้สามารถเชื่อมต่อได้เฉพาะใน LocalScript
สคริปท์ท้องถิ่น' hightlight='5-7
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.countdownStarted:Connect(function()
print("The countdown has started")
end)
พิมพ์ออกแสดง
จะเกิดไฟไหม้เมื่อพิมพ์ออกแสดงให้ผู้ใช้ อีเวนต์นี้สามารถเชื่อมต่อได้เฉพาะใน LocalScript
สคริปท์ท้องถิ่น' hightlight='5-7
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.printoutShown:Connect(function()
print("The printout is showing")
end)
แสดงทันที
จะเกิดไฟไหม้เมื่อพิมพ์ปิดและปุ่มกล้องแสดงอีกครั้ง อีเวนต์นี้สามารถเชื่อมต่อได้เฉพาะใน LocalScript
สคริปท์ท้องถิ่น' hightlight='5-7
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.promptShown:Connect(function()
print("The camera prompt is showing")
end)
การโทรกลับ
ซ่อน OtherGuis
ซ่อน OtherGuis(callback: function )
คอลเลกชันนี้เรียกกลับทันทีก่อนที่จะแสดงพิมพ์ออก ทำให้คุณสามารถปิดใช้งานทั้งหมด ScreenGuis หรือองค์ประกอบภายในพิมพ์ออกก่อนที่จะแสดงพิมพ์ออกGUIs ที่ใช้โดยบูธภาพมีคุณสมบัติ แสดงในบูธภาพ ตั้งค่าเป็น true ดู การมองเห็น GUI สำหรับรายละเอียดและรหัสตัวอย่าง
แสดง OtherGuis
แสดง OtherGuis(callback: function )
คอลเลกชันนี้เรียกกลับหลังจากพิมพ์ออกถูกปิดแล้วทำให้คุณสามารถเปิดใช้งานทั้งหมด ScreenGuis หรือองค์ประกอบภายในได้อีกครั้งGUIs ที่ใช้โดยบูธภาพมีคุณสมบัติ แสดงในบูธภาพ ตั้งค่าเป็น true ดู การมองเห็น GUI สำหรับรายละเอียดและรหัสตัวอย่าง