ใน ใช้ซ้ำโค้ด คุณอาจสังเกตเห็นการใช้งานบ่อยของวิธี game:GetService()บริการ Roblox ช่วยให้คุณสามารถเข้าถึงคุณลักษณะที่ติดตั้งไว้ของเครื่องยนต์ได้ เช่น ไอเท็มในประสบการณ์การเปิดใช้งานการแชท การเล่นเสียง การแอนิเมชั่นวัตถุ และการจัดการตัวอย่าง
จริงๆ บริการเป็นขั้นตอนแรกใน รูปแบบที่พื้นฐานที่สุดและทั่วไปที่สุดของการพัฒนา Roblox :
- รับบริการ
- ต้องการสคริปต์โมดูล
- เพิ่มฟังก์ชันท้องถิ่น
- เพิ่มเหตุการณ์ ที่กระตุ้นฟังก์ชันเหล่านั้น ที่ทำให้เกิดการเรียกใช้
ตัวอย่างเช่น คุณอาจต้องการบันทึกตำแหน่งผู้เล่นในโลกเมื่อพวกเขาออกจากประสบการณ์ของคุณ:
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SaveManager = require(ReplicatedStorage:WaitForChild("SaveManager"))
-- ฟังก์ชันท้องถิ่นที่เรียกฟังก์ชันที่ใช้ซ้ำได้ในสคริปต์โมดูล
local function saveProgress(character)
-- รับตำแหน่งของตัวละครผู้เล่น
local position = character:FindFirstChild("HumanoidRootPart").Position
-- ใช้ฟังก์ชัน saveData ในสคริปต์โมดูลซึ่งเขียนลงใน
-- บริการร้านข้อมูล
SaveManager.saveData(character, position)
end
-- ฟังก์ชันท้องถิ่นอีกตัวที่เรียก saveProgress() เมื่อลบตัวละคร
-- จากประสบการณ์ (ในกรณีนี้เมื่อผู้เล่นออก)
local function onPlayerAdded(player)
player.CharacterRemoving:Connect(saveProgress)
end
-- เรียก onPlayerAdded เมื่อผู้เล่นเชื่อมต่อกับประสบการณ์ครั้งแรก
Players.PlayerAdded:Connect(onPlayerAdded)
รายละเอียดสำคัญบางอย่างรวมถึง:
- เนื่องจากคุณควรเอาคืนบริการเพียงครั้งเดียวต่อสคริปต์เท่านั้น การแนะนำคือการให้ตัวแปรมีชื่อเดียวกับบริการข้อตกลงนี้ใช้กับสคริปต์โมดูลเช่นกัน
- คุณดึงบริการด้วยตัวแปรทั่วไป game ซึ่งเป็นการอ้างอิงถึงรากของโมเดลข้อมูล
- Roblox ไม่ให้การรับประกันเกี่ยวกับคำสั่งโหลด (และ การสตรีมตัวอย่าง ทำให้สิ่งที่โหลดและไม่โหลดในเวลาใดก็ไม่ชัดเจน ดังนั้นการใช้ Instance:WaitForChild() จึงเป็นมาตรการรักษาความปลอดภัยที่สำคัญ
แทนที่จะเปรียบเทียบ ไลบรารีมาตรฐาน , ฟังก์ชันและตัวแปรทั่วโลก หรือไลบรารีของบุคคลที่สาม, ส่วนใหญ่ของการพัฒนา Roblox คือการระบุว่าบริการหลาย, หลายบริการสามารถช่วยคุณเพิ่มฟังก์ชันที่ต้องการให้กับประสบการณ์ของคุณได้อย่างไรในตัวอย่างข้างต้น แทนที่จะใช้ห้องสมุด I/O มาตรฐานเพื่อเขียนลงในดิสก์ คุณใช้บริการเมฆ เพื่อจัดเก็บข้อมูล
บริการคอนเทนเนอร์
บริการคอนเทนเนอร์สามารถบรรจุและมีอิทธิพลต่อวัตถุอื่นได้บริการคอนเทนเนอร์เหล่านี้อยู่ที่รากของโมเดลข้อมูลและปรากฏในหน้าต่างสํารวจของ Studioโดยรวมแล้วบริการคอนเทนเนอร์เหล่านี้จะสร้างโครงสร้างที่เป็นระเบียบสำหรับโมเดลข้อมูลดังนั้น Roblox Engine จึงสามารถตีความและแสดงสถานที่ของคุณได้อย่างถูกต้องตารางต่อไปนี้รวมถึงบริการคอนเทนเนอร์ทั่วไปบางอย่าง
บริการ | คําอธิบาย :--- | :--- Workspace | มีวัตถุทั้งหมดที่แสดงในโลก 3D เช่นชิ้นส่วนและพื้นที่ Lighting | มีวัตถุสำหรับการตั้งค่าเอฟเฟกต์แสงทั่วไป เช่น Atmosphere และ Class.Sky``Class.ReplicatedStorage และ ReplicatedFirst | มีเนื้อหาและโลจิสติกที่ซ้ำกันระหว่างเซิร์ฟเวอร์และไคลเอนต์
เพื่อตรวจสอบโมเดลข้อมูลต่อไป คุณสามารถใช้วิธีเหล่านี้ได้:
- game:FindService() ค้นหาตัวอย่างของบริการที่ระบุ
- game:GetChildren() ส่งคืนคอลเลกชันของลูกโซ่รากทั้งหมดของโมเดลข้อมูลซึ่งเป็นบริการคอนเทนเนอร์ระดับสูง
- game:GetDescendants() ส่งคืนคอลเลกชันของลูกหลานทั้งหมดของโมเดลข้อมูลรวมถึงบริการทั้งหมดและลูกหลานของพวกเขา
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับบริการคอนเทนเนอร์ ดูเอกสาร แบบจำลองข้อมูล
บริการสคริปต์
บริการสคริปต์ให้ฟังก์ชันมาตรฐานใน Roblox Engine ที่คุณเรียกภายในสคริปต์ตารางต่อไปนี้รวมถึงบริการสคริปต์ทั่วไปบางอย่าง
บริการ | คําอธิบาย :--- | :--- TweenService | ใช้เพื่อแทนที่คุณสมบัติเชิงตัวเลขของตัวอย่างอื่นจากมูลค่าจุดเริ่มต้นถึงจุดสิ้นสุดด้วยตัวเลือกสําหรับการผ่อนคลายทิศทางและสไตล์การทําซ้ําและการชะลอ MarketplaceService | บริการที่รับผิดชอบในการทำธุรกรรมในประสบการณ์ เช่น การเรียกให้ผู้เล่นซื้อผลิตภัณฑ์ สมัครสมาชิก บัตรผ่านอัพเกรดเป็น Roblox Premium เป็นต้น ContextActionService | ช่วยให้คุณสามารถผูกการใส่ข้อมูลของผู้ใช้ เช่น การกดปุ่ม การแตะหน้าจอ หรือการกดปุ่มควบคุมไปยังการดำเนินการบริบท เช่น การแก้ไขการควบคุมเมื่อผู้ใช้เข้าและออกจากรถ RunService | มีวิธีการและเหตุการณ์สำหรับการจัดการเวลาเฟรมต่อเฟรมสำหรับการจัดการเวลาของประสบการณ์ รวมถึงการตรวจสอบบริบท (เซิร์ฟเวอร์ ไคลเอนต์ โหมด Studio) ที่ประสบการณ์กำลังดำเนินอยู่มีประโยชน์สำหรับการดำเนินการใดๆ หรืออัปเดตในทุกกรอบระยะเวลาการทำงานSoundService | ควบคุมหลายด้านทั่วโลกของวิธีที่เสียงเล่นในประสบการณ์ เช่น เครื่องชั่งดอปเปอร์และเสียงภาพกระบวนที่มีปริมาณยังสามารถมีกลุ่มเสียงเพื่อควบคุมคุณสมบัติของเสียงและเอฟเฟกต์ไดนามิกของสัญญาณเสียงหลายชิ้นได้ในครั้งเดียว CollectionService | จัดการกลุ่ม (คอลเลกชัน) ของตัวอย่างที่สามารถสะท้อนแท็กจากเซิร์ฟเวอร์ไปยังไคลเอนต์ได้ ทำให้คุณสามารถกำหนดและทำงานกับกลุ่มตัวอย่างที่เกี่ยวข้องได้ง่ายขึ้น
บริการเมฆ
Roblox ยังมีบริการเฉพาะในเมฆสำหรับจัดการงานและกระบวนการที่เกิดขึ้นในคลาวด์ Robloxตารางต่อไปนี้รวมถึงบริการเมฆทั่วไปบางอย่าง
บริการ | คําอธิบาย :--- | :--- DataStoreService | สําหรับการจัดเก็บข้อมูลถาวรข้ามเซสชั่นMemoryStoreService | สำหรับการจัดเก็บข้อมูลที่เปลี่ยนแปลงอย่างรวดเร็วและชั่วคราวMessagingService | สำหรับการสื่อสารระหว่างหลายเซิร์ฟเวอร์ในระหว่างเซสชั่นสด
บริการเมฆมี API เว็บที่เหมาะสมเช่นกัน; พวกเขาสามารถเข้าถึงได้จากสคริปต์หรือเครื่องมือภายนอก สำหรับข้อมูลเพิ่มเติม ดู เปิดเมฆ