Skripttypen und -orte

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Für viele Entwickler ist die grundlegende Herausforderung, sich an das Skriptieren von Roblox anzupassen, die Bedeutung der Dateilocation und der EigenschaftenScript.RunContext .Abhängig vom eingeben, der Position im Explorer und dem Ausführungskontext können sich Skripte sehr unterschiedlich verhalten.Bestimmte Methode-Aufrufe können fehlschlagen, Objekte in deiner Erfahrung können nicht zugänglich sein oder Skripte laufen überhaupt nicht.

Der Grund für diese Komplexität ist, dass Roblox-Erlebnisse standardmäßig Mehrspieler sind.Skripte benötigen die Fähigkeit, nur auf dem Server zu laufen, nur auf dem Client zu laufen oder über beide geteilt zu werden.Die Entwicklung der Roblox-Plattform im Laufe der Zeit hat die Situation weiter kompliziert.

Skript-Arten

Roblox hat drei Arten von Skripten:

  • Script - Code, der auf dem Server oder dem Client ausgeführt wird, abhängig von seiner Lage und Script.RunContext Eigenschaften.
  • LocalScript - Code, der nur auf dem Client ausgeführt wird. Hat keinen Laufkontext.
  • ModuleScript - Code, den Sie in anderen Skripten wiederverwenden können. Hat keinen Laufkontext.

Wenn du ein Script erstellst, ist sein Standard-Ausführungskontext Legacy , was bedeutet, dass es a) ein Server-Skript ist und b) nur ausgeführt wird, wenn es sich in einem Server-Container befindet, wie Workspace oder ServerScriptService .

  • Wenn du den Laufkontext des Skript, das. PL: die Skriptsauf Server änderst, kann es jetzt auch in ReplicatedStorage ausgeführt werden, aber das wird nicht empfohlen.Der Inhalt dieser Position wird an Clients repliziert, sodass es sich um eine schlechte Position für serverseitige Skripte handelt.
  • Wenn du den Laufkontext des Skript, das. PL: die Skriptsauf Client änderst, kann es in ReplicatedStorage ausgeführt werden.Es kann auch in StarterCharacterScripts und StarterPlayerScripts ausgeführt werden.Die Starter-Container werden jedoch an die Clients kopiert, so dass das ursprüngliche Skript und die Kopie ausführenwird, was nicht gewünscht ist.

Um einen Skriptausführungskontext zu ändern, wähle ihn im Explorer aus und ändere den Wert im Eigenschaften-Fenster.

RunContext property indicated for a Script.

Empfehlungen

  • Durch die Verwendung von Server und Client Werten für RunContext wird die Ambivalenz bei der Ausführung von Skripten beseitigt und kann dazu beitragen, dein Projekt zu organisieren.Die besten Anwendungsfälle für nicht standardmäßige RunContext Werte sind:

    • Client-Skripte, die Sie von ReplicatedStorage oder ReplicatedFirst ausführen möchten.
    • Server- oder Client-Skripte, die du innerhalb von Modellen und Paketen einfügst.Die explizite Festlegung des Laufkontextes macht Modelle und Pakete wahrscheinlicher, ordnungsgemäß von verschiedenen Orten zu arbeiten.
  • Um Code zwischen Server- und Client-Skripts zu teilen, verwende ModuleScripts in ReplicatedStorage.

  • Verwende LocalScripts in StarterCharacterScripts , StarterPlayerScripts , StarterGui und StarterPack.

Skript-Standorte

Ort | Beschreibung :--- | :--- Arbeitsbereich | Vertreibt die Welt.Dieser Ort funktioniert gut für Server-Skripte, die direkt an Objekte anhängen und ihr Verhalten steuern.ReplicatedFirst | Enthält Objekte, die sich zuerst auf den Client replizieren, bevor irgendetwas anderes passiert.Dieser Ort ist ideal für das absolute Minimum an Objekten und Client-Skripten, die zum Anzeigen eines Ladebildschirms erforderlich sind.ReplicatedStorage | Enthält Objekte, die sowohl auf den Client als auch auf den Server repliziert werden.Dieser Ort ist ideal für Class.ModuleScript\|ModuleScripts, den Sie sowohl auf dem Server als auch auf dem Client verwenden möchten.Class.LocalScript\|LocalScripts laufe nicht von diesem Ort weg, aber Class.Script\|Scripts mit einem Laufkontext von Client tue es.ServerScriptService | Enthält Server-Skripte.Dieser Ort ist ideal für Skripte, die auf serverseitige Funktionalität oder Objekte zugreifen müssen, wie z. B. Spiellogik und Cloud-Speicher.ServerStorage | Enthält Server-seitige Objekte.Dieser Ort ist ideal für große Objekte, die nicht sofort auf Kunden repliziert werden müssen, wenn sie sich einem Erlebnis anschließen.Skripte laufen nicht von diesem Ort aus, aber du kannst die serverseitige Class.ModuleScript\|ModuleScripts hier speichern.StarterPlayer.StarterCharacterScripts | Enthält Class.LocalScript\|LocalScripts, die laufen, wenn der Charakter spawnt.StarterPlayer.StarterPlayerScripts | Enthält allgemeine Zwecke Class.LocalScript\|LocalScripts, die ausgeführt werden, wenn der Spieler der Erfahrung beitritt.StarterGui | Enthält GUI-Elemente, die der Client anzeigt, wenn er das Spiel laden.Class.LocalScript\|LocalScripts kann von diesem Ort aus ausgeführt werden.Dieser Ort ist ideal für Skripte, die die Benutzeroberfläche des Spiels modifizieren, wie z. B. das Hinzufügen von Schaltflächen, Menüs und Popups.StarterPack | Enthält im Allgemeinen nur Class.Tool\|Tools, kann aber auch Class.LocalScript\|LocalScripts enthalten, um Spielerrucksäcke einzurichten.

Dieses Bild zeigt, welche Explorer-Fensterstandorte Client-Skripte enthalten können.Denken Sie daran, und können enthalten, während die -Container verwenden sollten.

Diagram showing which script locations run on clients.

Beispiel-Projektstruktur

Das Pflanzen-Referenzprojekt zeigt, wie du deinen Code in einer großen, komplexen Erlebnisorganisieren könntest.

Besonders bemerkenswert ist, wie es die überwiegende Mehrheit seines Codes als wiederverwendbar ModuleScripts in ReplicatedStorage und ServerStorage speichert.