In Code wiederverwenden haben Sie vielleicht die häufige Verwendung der Methode game:GetService() bemerkt. Roblox-Dienste ermöglichen den Zugriff auf die integrierten Funktionen der Engine, wie das Verkaufen von In-Game-Items, das Aktivieren des Chats, das Abspielen von Geräuschen, das Animieren von Objekten und das Verwalten von Instanzen.
Tatsächlich sind Dienste der erste Schritt im fundamentalsten, häufigsten Muster der Roblox-Entwicklung:
- Dienste abrufen.
- Modul-Skripte erfordern.
- Lokale Funktionen hinzufügen.
- Die Ereignisse hinzufügen, die diese Funktionen auslösen.
Zum Beispiel möchten Sie vielleicht die Position der Spieler in der Welt speichern, wenn sie Ihr Spiel verlassen:
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SaveManager = require(ReplicatedStorage:WaitForChild("SaveManager"))
-- Lokale Funktion, die eine wiederverwendbare Funktion im Modul-Skript aufruft.
local function saveProgress(character)
-- Die Position des Charakters des Spielers abrufen.
local position = character:FindFirstChild("HumanoidRootPart").Position
-- Die Funktion saveData im Modul-Skript verwenden, die in den
-- DataStoreService schreibt.
SaveManager.saveData(character, position)
end
-- Eine weitere lokale Funktion, die saveProgress() aufruft, wenn ein Charakter
-- aus dem Spiel entfernt wird (in diesem Fall, wenn der Spieler das Spiel verlässt).
local function onPlayerAdded(player)
player.CharacterRemoving:Connect(saveProgress)
end
-- Ruft onPlayerAdded auf, wenn ein Spieler sich zum ersten Mal mit dem Spiel verbindet.
Players.PlayerAdded:Connect(onPlayerAdded)
Einige wichtige Details umfassen:
- Da Sie einen Dienst in einem Skript nur einmal abrufen sollten, ist es üblich, der Variablen denselben Namen wie dem Dienst zu geben. Diese Konvention gilt auch für Modul-Skripte.
- Sie rufen Dienste mit der globalen Variablen game ab, einem Verweis auf die Wurzel des Datenmodells.
- Roblox gibt keine Garantien über die Ladeordnung (und Instanz-Streaming kompliziert weiter, was zu einem bestimmten Zeitpunkt geladen ist und was nicht), sodass die Verwendung von Instance:WaitForChild() eine wichtige Sicherheitsmaßnahme ist.
Anstatt Standardbibliotheken, globale Funktionen und Variablen oder Bibliotheken von Drittanbietern zu vergleichen, besteht ein wesentlicher Teil der Roblox-Entwicklung darin, zu identifizieren, welche der vielen Dienste Ihnen helfen können, die gewünschte Funktionalität zu Ihren Spielen hinzuzufügen. Im obigen Beispiel verwenden Sie anstelle einer Standard-I/O-Bibliothek, um auf die Festplatte zu schreiben, Cloud-Dienste, um Daten zu speichern.
Container-Dienste
Container-Dienste können andere Objekte enthalten und beeinflussen. Diese Container-Dienste befinden sich an der Wurzel des Datenmodells und sind im Explorer-Fenster von Studio sichtbar. Zusammen bilden diese Container-Dienste eine strukturierte Hierarchie für das Datenmodell, sodass die Roblox-Engine Ihren Ort richtig interpretieren und rendern kann. Die folgende Tabelle enthält einige gängige Container-Dienste.
| Dienst | Beschreibung |
|---|---|
| Workspace | Enthält alle Objekte, die in der 3D-Welt gerendert werden, wie Teile und Terrain. |
| Lighting | Enthält Objekte zum Einstellen universeller Lichteffekte, wie Atmosphere und Sky. |
| ReplicatedStorage und ReplicatedFirst | Enthalten Inhalte und Logik, die zwischen Server und Client repliziert werden. |
Um das Datenmodell weiter zu untersuchen, können Sie diese Methoden verwenden:
- game:FindService() sucht nach der Instanz des angegebenen Dienstes.
- game:GetChildren() gibt ein Array aller Wurzelkinder des Datenmodells zurück, das die obersten Container-Dienste sind.
- game:GetDescendants() gibt ein Array aller Nachkommen des Datenmodells zurück, einschließlich aller Container-Dienste und deren Kinder.
Für weitere Informationen zu Container-Diensten siehe die Datenmodell-Dokumentation.
Skript-Dienste
Skript-Dienste bieten standardmäßige Funktionalitäten in der Roblox-Engine, die Sie in Skripten aufrufen. Die folgende Tabelle enthält einige gängige Skript-Dienste.
| Dienst | Beschreibung |
|---|---|
| TweenService | Wird verwendet, um numerische Eigenschaften anderer Instanzen von einem Start- zu einem Endwert zu interpolieren, mit Optionen für Easing-Richtung und -Stil, Wiederholung und Verzögerung. |
| MarketplaceService | Der Dienst, der für Transaktionen im Spiel verantwortlich ist, wie das Auffordern des Spielers, ein Entwicklerprodukt, ein Abonnement, einen Pass, Roblox Premium usw. zu kaufen. |
| RunService | Enthält Methoden und Ereignisse für das Zeitmanagement von Frame zu Frame sowie zur Überprüfung des Kontexts (Server, Client, Studio-Modus), in dem das Spiel läuft. Nützlich, um jeden Prozess oder Update in jedem Laufzeit-Frame auszuführen. |
| SoundService | Steuert verschiedene globale Aspekte, wie Audio in einem Spiel abgespielt wird, wie die Doppler-Skala und volumetrisches Audio. Kann auch Soundgruppen enthalten, um die Lautstärke und die dynamischen Effekt-Eigenschaften mehrerer Audiosignale gleichzeitig zu steuern. |
| CollectionService | Verwaltert Gruppen (Sammlungen) von Instanzen mit Tags, die vom Server zum Client repliziert werden, sodass Sie einfacher Gruppen verwandter Instanzen zuweisen und damit arbeiten können. |
Cloud-Dienste
Roblox hat auch spezielle Cloud-Dienste zum Handhaben von Aufgaben und Prozessen, die in der Roblox-Cloud stattfinden. Die folgende Tabelle enthält einige gängige Cloud-Dienste.
| Dienst | Beschreibung |
|---|---|
| DataStoreService | Zum Speichern persistenter Daten über Sitzungen hinweg. |
| MemoryStoreService | Zum Speichern häufiger und kurzlebiger Daten, die sich schnell ändern. |
| MessagingService | Für die Kommunikation zwischen mehreren Servern während Live-Sitzungen. |
Cloud-Dienste haben auch entsprechende Web-APIs; sie sind von externen Skripten oder Tools aus zugänglich. Für weitere Informationen siehe Open Cloud.