W Ponownym użyciu kodu mogłeś zauważyć częste użycie metody game:GetService(). Usługi Roblox umożliwiają dostęp do wbudowanych funkcji silnika, takich jak sprzedaż przedmiotów w grze, włączanie czatu, odtwarzanie dźwięków, animowanie obiektów i zarządzanie instancjami.
W rzeczywistości, usługi są pierwszym krokiem w najbardziej fundamentalnym, powszechnym wzorcu tworzenia w Roblox:
- Uzyskaj usługi.
- Wymagaj skrypty modułów.
- Dodaj lokalne funkcje.
- Dodaj wydarzenia, które wywołują te funkcje.
Na przykład, możesz chcieć zapisać pozycje graczy w świecie, gdy opuszczają twoją grę:
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SaveManager = require(ReplicatedStorage:WaitForChild("SaveManager"))
-- Lokalna funkcja, która wywołuje ponownie używaną funkcję w skrypcie modułu.
local function saveProgress(character)
-- Uzyskaj pozycję postaci gracza.
local position = character:FindFirstChild("HumanoidRootPart").Position
-- Użyj funkcji saveData w skrypcie modułu, która zapisuje do
-- DataStoreService.
SaveManager.saveData(character, position)
end
-- Inna lokalna funkcja, która wywołuje saveProgress() gdy postać jest usuwana
-- z gry (w tym przypadku, gdy gracz odchodzi).
local function onPlayerAdded(player)
player.CharacterRemoving:Connect(saveProgress)
end
-- Wywołuje onPlayerAdded, gdy gracz po raz pierwszy łączy się z grą.
Players.PlayerAdded:Connect(onPlayerAdded)
Niektóre kluczowe szczegóły obejmują:
- Ponieważ powinieneś pobierać usługę tylko raz w skrypcie, konwencja polega na nadaniu zmiennej tej samej nazwy co usługa. Ta konwencja dotyczy również skryptów modułów.
- Usługi pobierasz przy użyciu zmiennej globalnej game, która odnosi się do korzenia modelu danych.
- Roblox nie zapewnia gwarancji dotyczących kolejności ładowania (a strumieniowanie instancji dodatkowo komplikuje to, co jest i nie jest załadowane w danym momencie), więc użycie Instance:WaitForChild() jest ważnym środkiem ostrożności.
Zamiast porównywać standardowe biblioteki, globalne funkcje i zmienne lub biblioteki osób trzecich, dużą częścią tworzenia w Roblox jest identyfikacja, które z wielu, wielu usług mogą pomóc ci dodać pożądaną funkcjonalność do twoich gier. W powyższym przykładzie, zamiast używać standardowej biblioteki I/O do zapisu na dysk, używasz usług chmurowych do przechowywania danych.
Usługi kontenerowe
Usługi kontenerowe mogą zawierać i wpływać na inne obiekty. Te usługi kontenerowe znajdują się u podstaw modelu danych i są widoczne w oknie Eksploratora w Studio. Łącznie te usługi kontenerowe tworzą uporządkowaną hierarchię dla modelu danych, umożliwiając silnikowi Roblox odpowiednią interpretację i renderowanie twojego miejsca. Poniższa tabela zawiera niektóre powszechne usługi kontenerowe.
| Usługa | Opis |
|---|---|
| Workspace | Zawiera wszystkie obiekty, które renderują się w 3D, np. części i teren. |
| Lighting | Zawiera obiekty do ustawiania uniwersalnych efektów oświetleniowych, takie jak Atmosphere i Sky. |
| ReplicatedStorage i ReplicatedFirst | Zawierają treści i logikę, które replikują się między serwerem a klientem. |
Aby dokładniej zbadać model danych, możesz użyć tych metod:
- game:FindService() wyszukuje instancję określonej usługi.
- game:GetChildren() zwraca tablicę wszystkich dzieci root modelu danych, które są na poziomie usługi kontenerowej.
- game:GetDescendants() zwraca tablicę wszystkich potomków modelu danych, w tym wszystkich usług kontenerowych i ich dzieci.
Aby uzyskać więcej informacji o usługach kontenerowych, zapoznaj się z dokumentacją modelu danych.
Usługi skryptowe
Usługi skryptowe oferują standardową funkcjonalność w silniku Roblox, którą wywołujesz w skryptach. Poniższa tabela zawiera niektóre powszechne usługi skryptowe.
| Usługa | Opis |
|---|---|
| TweenService | Służy do interpolacji właściwości numerycznych innych instancji z wartości początkowej do końcowej, z opcjami dla kierunku i stylu wyrównania, powtórzeń i opóźnienia. |
| MarketplaceService | Usługa odpowiedzialna za transakcje w grze, np. wywołującą prośbę do gracza o zakup produktu dewelopera, subskrypcji, przepustki, Roblox Premium itp. |
| RunService | Zawiera metody i wydarzenia do zarządzania czasem na klatkę, a także do sprawdzania kontekstu (serwer, klient, tryb Studio), w którym gra jest uruchamiana. Użyteczne do uruchamiania dowolnego procesu lub aktualizacji na każdej klatce czasu wykonywania. |
| SoundService | Kontroluje różne globalne aspekty odtwarzania audio w grze, takie jak skala Dopplera i audio wolumetryczne. Może również zawierać grupy dźwięków do kontrolowania głośności i właściwości efektów dynamicznych wielu sygnałów audio jednocześnie. |
| CollectionService | Zarządza grupami (kolekcjami) instancji z tagami, które replikują się z serwera do klienta, co ułatwia przypisywanie i pracę z grupami powiązanych instancji. |
Usługi chmurowe
Roblox ma również specjalne usługi chmurowe do obsługi zadań i procesów, które odbywają się w chmurze Roblox. Poniższa tabela zawiera niektóre powszechne usługi chmurowe.
| Usługa | Opis |
|---|---|
| DataStoreService | Do przechowywania danych trwałych między sesjami. |
| MemoryStoreService | Do przechowywania częstych i efemerycznych danych, które szybko się zmieniają. |
| MessagingService | Do komunikacji między wieloma serwerami podczas sesji na żywo. |
Usługi chmurowe mają również odpowiadające im interfejsy API sieciowe; są dostępne z zewnętrznych skryptów lub narzędzi. Aby uzyskać więcej informacji, zobacz Open Cloud.