Trong Tái sử dụng mã, bạn có thể đã nhận thấy việc sử dụng thường xuyên của phương thức game:GetService().Các dịch vụ Roblox cho phép bạn truy cập các tính năng tích hợp của động cơ, như bán các vật phẩm trong trải nghiệm, bật chat, phát âm thanh, hoạt hình các đối tượng và quản lý các thời điểm.
Trên thực tế, các dịch vụ là bước đầu tiên trong mẫu phổ biến và cơ bản nhất của phát triển Roblox :
- Nhận các dịch vụ.
- Yêu cầu kịch bản mô-đun.
- Thêm chức năng địa phương.
- Thêm các sự kiện events kích hoạt các chức năng đó.
Ví dụ, bạn có thể muốn lưu vị trí của người chơi trên thế giới khi họ rời khỏi trải nghiệm của bạn:
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SaveManager = require(ReplicatedStorage:WaitForChild("SaveManager"))
-- Chức năng địa phương gọi một chức năng có thể sử dụng lại trong kịch bản module.
local function saveProgress(character)
-- Nhận vị trí của nhân vật của người chơi.
local position = character:FindFirstChild("HumanoidRootPart").Position
-- Sử dụng chức năng saveData trong kịch bản module, viết vào
-- Dịch vụ lưu trữ dữ liệu.
SaveManager.saveData(character, position)
end
-- Chức năng địa phương khác gọi saveProgress() khi một nhân vật bị xóa
-- từ trải nghiệm (trong trường hợp này, khi người chơi rời đi).
local function onPlayerAdded(player)
player.CharacterRemoving:Connect(saveProgress)
end
-- Gọi onPlayerAdded khi một người chơi đầu tiên kết nối với trải nghiệm.
Players.PlayerAdded:Connect(onPlayerAdded)
Một số chi tiết quan trọng bao gồm:
- Bởi vì bạn chỉ nên lấy một dịch vụ một lần cho mỗi kịch bản, thông lệ là đưa cho biến cùng tên với dịch vụ.Nguyên tắc này cũng áp dụng cho các kịch bản module.
- Bạn lấy lại các dịch vụ với biến toàn cầu game, một tham chiếu đến gốc của mô hình dữ liệu.
- Roblox không đưa ra bảo đảm xung quanh lệnh tải (và luồng ví dụ tiếp tục làm phức tạp thêm những gì đang và không được tải vào bất kỳ thời điểm nào), vì vậy sử dụng Instance:WaitForChild() là một biện pháp an toàn quan trọng.
Thay vì so sánh thư viện tiêu chuẩn, chức năng và biến toàn cầu, hoặc thư viện bên thứ ba, một phần lớn của phát triển Roblox là xác định các dịch vụ nào trong số nhiều, nhiều dịch vụ có thể giúp bạn thêm chức năng mong muốn vào trải nghiệm của bạn.Trong ví dụ trên, thay vì sử dụng thư viện I/O tiêu chuẩn để viết vào đĩa, bạn sử dụng dịch vụ đám mây để lưu trữ dữ liệu.
Dịch vụ thùng chứa
Các dịch vụ thùng có thể chứa và ảnh hưởng đến các đối tượng khác.Các dịch vụ thùng chứa này nằm ở gốc của mô hình dữ liệu và có thể nhìn thấy trong cửa sổ Explorer của Studio.Tổng thể, các dịch vụ thùng chứa này tạo ra một cấu trúc bộ nhận dạng có cấu trúc cho mô hình dữ liệu, do đó Roblox Engine có thể hiểu và hiển thị đúng địa điểmcủa bạn.Bảng sau đây bao gồm một số dịch vụ thùng chung.
Dịch vụ | Mô tả :--- | :--- Workspace | Bao gồm tất cả các đối tượng hiển thị trong thế giới 3D, như các bộ phận và địa hình. Lighting | Bao gồm các đối tượng để đặt hiệu ứng chiếu sáng toàn cầu, chẳng hạn như Atmosphere và Sky . ReplicatedStorage và ReplicatedFirst | Chứa nội dung và logic sao lưu giữa máy chủ và khách hàng.
Để kiểm tra mô hình dữ liệu tiếp theo, bạn có thể sử dụng các phương pháp này:
- game:FindService() tìm kiếm instance của dịch vụ được định nghĩa.
- game:GetChildren() trả về một array của tất cả con cháu gốc của mô hình dữ liệu, đó là các dịch vụ thùng chứa cấp cao nhất.
- game:GetDescendants() trả về một array của tất cả các con trai của mô hình dữ liệu, bao gồm tất cả các dịch vụ bao bì và con của chúng.
Để biết thêm thông tin về các dịch vụ container, hãy xem tài liệu mô hình dữ liệu.
Dịch vụ lập trình
Các dịch vụ lập trình cung cấp chức năng tiêu chuẩn trong Động cơ Roblox mà bạn gọi trong các tập lệnh.Bảng sau đây bao gồm một số dịch vụ lập trình phổ biến.
Dịch vụ | Mô tả :--- | :--- TweenService | Được sử dụng để interpolate các thuộc tính số của các instance khác từ giá trị bắt đầu đến cuối, với các lựa chọn để làm dịu hướng và phong cách, lặp lại và trì hoãn. MarketplaceService | Dịch vụ chịu trách nhiệm cho các giao dịch trong trải nghiệm, chẳng hạn như yêu cầu người chơi mua sản phẩm nhà phát triển, gói đăng ký hoặc game vé, nâng cấp lên Roblox Premium, v.v. ContextActionService | Cho phép bạn gắn kết nhập của người dùng, chẳng hạn như nhấn gõ, chạm vào màn hình hoặc nhấn nút điều khiển để thực hiện các hành động ngữ cảnh, chẳng hạn như sửa đổi điều khiển khi người dùng vào và thoát khỏi xe. RunService | Bao gồm các phương pháp và sự kiện cho quản lý thời gian khung bằng khung, cũng như kiểm tra ngữ cảnh (máy chủ, khách hàng, chế độ Studio) mà trải nghiệm đang chạy.Hữu ích để chạy bất kỳ quá trình hoặc cập nhật nào trên mọi khung thời gian thực thi. SoundService | Điều khiển các khía cạnh toàn cầu khác nhau của việc phát âm thanh trong một trải nghiệm, chẳng hạn như thước đo Doppler và âm thanh khối lượng.Cũng có thể chứa các nhóm âm thanh để kiểm soát các thuộc tính âm lượng và hiệu ứng năng động của nhiều tín hiệu âm thanh cùng một lúc. CollectionService | Quản lý nhóm (bộ sưu tập) các instanz với các thẻ sao chép từ máy chủ sang khách hàng, cho phép bạn dễ dàng gán và làm việc với các nhóm các instanz liên quan hơn.
Dịch vụ đám mây
Roblox cũng có các dịch vụ đám mây đặc biệt để xử lý các nhiệm vụ và quá trình xảy ra trong đám mây Roblox.Bảng sau đây bao gồm một số dịch vụ đám mây phổ biến.
Dịch vụ | Mô tả :--- | :--- DataStoreService | Để lưu trữ dữ liệu lâu dài trên các phiên.MemoryStoreService | Đối với việc lưu trữ dữ liệu thường xuyên và tạm thời thay đổi nhanh chóng.MessagingService | Để giao tiếp giữa nhiều máy chủ trong các phiên trực tiếp.
Các dịch vụ đám mây cũng có API web tương ứng; chúng có thể truy cập từ các kịch bản hoặc công cụ bên ngoài. Để biết thêm thông tin, xem Mở đám mây.