W ponownym wykorzystaniu kodu możesz zauważyć częste używanie metody game:GetService().Usługi Roblox pozwalają na dostęp do zintegrowanych funkcji silnika, takich jak sprzedawanie przedmioty w projekciew doświadczeniu, 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, wspólnym wzorcu rozwoju Roblox :
- Zdobądź usługi.
- Wymagane są skrypty modułu.
- Dodaj lokalne funkcje.
- Dodaj wydarzenia, które uruchamiają te funkcje.
Na przykład, możesz chcieć zapisać pozycje graczy w świecie, gdy opuszczą twoje doświadczenie:
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SaveManager = require(ReplicatedStorage:WaitForChild("SaveManager"))
-- Lokalna funkcja, która wzywa funkcję ponownie używalną w skrypcie modułu.
local function saveProgress(character)
-- Zdobądź pozycję postaci gracza.
local position = character:FindFirstChild("HumanoidRootPart").Position
-- Użyj funkcji saveData w skrypcie modułu, który pisze do
-- Usługa DataStoreService.
SaveManager.saveData(character, position)
end
-- Inna lokalna funkcja, która wzywa saveProgress() gdy usunięto postać
-- z doświadczenia (w tym przypadku, gdy gracz odchodzi).
local function onPlayerAdded(player)
player.CharacterRemoving:Connect(saveProgress)
end
-- Wzywa onPlayera dodanego, gdy gracz po raz pierwszy połączy się z doświadczeniem.
Players.PlayerAdded:Connect(onPlayerAdded)
Niektóre kluczowe szczegóły obejmują:
- Ponieważ powinieneś odzyskiwać usługę tylko raz na skrypt, konwencją jest nadanie zmiennej tej samej nazwy, co usługa.Ta konwencja ma zastosowanie również do skryptów modułowych.
- Odzyskujesz usługi za pomocą zmiennej globalnej game, odniesienia do korzenia modelu danych.
- Roblox nie daje gwarancji wokół kolejności ładowania (a strumieniowanie instancji dalej komplikuje to, co jest i nie jest wczytywane w dowolnym momencie), więc użycie jest ważnym środkiem bezpieczeństwa.
Zamiast porównywać standardowe biblioteki, globalne funkcje i zmienne lub biblioteki stron trzecich, duża część rozwoju Roblox polega na określeniu, które z wielu, wielu usług może pomóc Ci dodać pożądaną funkcjonalność do swoich doświadczeń.W przykładzie powyżej, zamiast używać standardowej biblioteki I/O do zapisywania na dysk, używasz usług chmurowych, aby przechowywać dane.
Usługi kontenerów
Usługi kontenerowe mogą zawierać i wpływać na inne obiekty.Te usługi kontenerowe znajdują się na korzeniu modelu danych i są widoczne w oknie Explorer w Studio.Wspólnie usługi kontenerowe tworzą strukturalną hierarchię dla modelu danych, więc silnik Roblox może prawidłowo interpretować i renderować twoje miejsce.Poniższa tabela zawiera niektóre powszechne usługi kontenerowe.
Usługa | Opis: --- | :--- Workspace | Zawiera wszystkie obiekty, które renderują się w świecie 3D, takie jak części i teren.Lighting | Zawiera obiekty do ustawiania uniwersalnych efektów oświetlenia, takich jak Atmosphere i Sky.ReplicatedStorage i ReplicatedFirst | Zawierają treść i logikę, które replikują się między serwerem a klientem.
Aby dalej zbadać model danych, możesz użyć tych metod:
- game:FindService() wyszukuje instancję określonej usługi.
- game:GetChildren() zwraca array wszystkich dzieci korzeni modelu danych, które są najwyższopoziomowymi usługami kontenera.
- game:GetDescendants() zwraca array wszystkich potomków modelu danych, w tym wszystkich usług kontenerowych i ich dzieci.
Aby uzyskać więcej informacji na temat usług kontenerowych, zobacz dokumentację modelu danych.
Usługi skryptowe
Usługi skryptowe zapewniają standardową funkcjonalność w silniku Roblox, którą wzywasz w skryptach.Poniższa tabela zawiera niektóre powszechne usługi skryptowe.
Usługa | Opis: --- | :--- TweenService | Używany do wstawiania wartości liczbowych innych instancji od początku do końca z opcjami ułatwiającymi kierunek i styl, powtórzenie i opóźnienie.MarketplaceService | Usługa odpowiedzialna za transakcje w doświadczeniu, takie jak poproszenie gracza o zakup produktu dewelopera, subskrypcji lub przepustki gry, aktualizacja do Roblox premiumitp.ContextActionService | Pozwala wiązać wejście użytkownika, takie jak naciśnięcie klawisza, dotknięcie ekranu lub naciśnięcie przycisku kontrolera, do działań kontekstowych, takich jak modyfikowanie sterowań, gdy użytkownik wsiada i wysiada z samochodu.RunService | Zawiera metody i zdarzenia do zarządzania czasem klatka po klatce, a także do sprawdzania kontekstu (serwer, klient, tryb Studio), w którym działa doświadczenie.Przydatne do uruchamiania dowolnego procesu lub aktualizacji na każdym ramie czasu wykonania.SoundService | Kontroluje różne globalne aspekty tego, jak dźwięk odtwarza się w doświadczeniu, takie jak skala Dopplera i dźwięk wolumetryczny.Może również zawierać grupy dźwiękowe, aby kontrolować właściwości głośności i efektów dynamicznych wielu sygnałów audio jednocześnie.CollectionService | Zarządza grupami (kolekcjami) instancji z tagami, które replikują się z serwera na klienta, umożliwiając łatwiejsze przypisywanie i praca z grupami powiązanych instancji.
Usługi chmurowe
Roblox ma również specjalne usługi chmurowe do zarządzania zadaniami i procesami, które występują w chmurze Roblox.Poniższa tabela zawiera niektóre powszechne usługi chmurowe.
Usługa | Opis: --- | :--- DataStoreService | Do przechowywania trwałych danych między sesjami.MemoryStoreService | Do przechowywania często zmieniających się danych ephemeralnych.MessagingService | Do komunikacji między wieloma serwerami podczas sesji na żywo
Usługi chmurowe mają również odpowiednie interfejsy API web; są one dostępne z zewnętrznych skryptów lub narzędzi. Aby uzyskać więcej informacji, zobacz Otwórz chmurę.