Einführung in Modulscripte

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

Wenn Projekte komplexer werden, ist es wichtig, darüber nachzudenken, wie Skripte organisiert sind. Gute Organisationspraktiken können sicherstellen, dass Code nicht zwischen Skripten dupliziert wird oder schwer zu verwalten ist.

Eine bessere Möglichkeit, Code zu organisieren und wiederzuverwenden, ist mit Modulscripten, einer einzigartigen Art von Skript, das eine Reihe von Funktionen und Variablen speichert, die für einen gemeinsamen Zweck bestimmt sind, wie z.B. das Verwalten von Spieler-Geld oder Feinden. Code innerhalb von Modulscripten kann von anderen Skripten verwendet werden. So können Sie dieselbe Funktion, die Münzen gibt, aus mehreren verschiedenen Skripten aufrufen, wann immer ein Spieler eine Quest abschließt oder einen Pickup findet.

Durch das Speichern häufig verwendeten Codes in Modulscripten wird die Wartung und Organisation des Codes einfacher, da Änderungen nur an einem Modulskript vorgenommen werden müssen, anstatt mehrere Skripte zu aktualisieren.

Grundlagen der Modulscripte

Modulscripte sind tatsächlich ihre eigenen separaten Objekte im Vergleich zu Skriptobjekten. In Roblox können Modulscripte mit einem lila Symbol gekennzeichnet werden.

Erstellen eines Modulscripts

Modulscripte werden häufig in ServerScriptService platziert, wenn sie von serverseitigen Skripten verwendet werden, und in ReplicatedStorage, wenn sie von clientseitigen lokalen Skripten (wie GUI-Interaktionen) verwendet werden.

  1. Erstellen Sie ein ModuleScript in ServerScriptService.

Struktur von Modulscripten

Wenn sie erstellt werden, beginnt jedes Modulskript mit dem folgenden Code:

local Module = {}
return Module

Die Zeile local Module = {} erstellt eine Tabelle oder einen Container von Code, in dem die gemeinsamen Funktionen und Variablen des Moduls gespeichert werden können. Diese Tabelle sollte in den Zweck des Moduls umbenannt werden, wie z.B. RewardManager oder ParticleController. Im Gegensatz zu anderen Variablen, die Camel Case (myVariable) sind, wird empfohlen, Modultabellen Pascal Case zu verwenden und mit einem Großbuchstaben zu beginnen (MyModule).

local RewardManager = {}
return RewardManager

Damit andere Skripte die nicht-lokalen Funktionen oder Variablen eines Moduls verwenden können, endet jedes Modul mit return MyModule. Wann immer ein anderes Skript versucht, Code aus dem Modul zu erhalten, ermöglicht return diesem Skript den Zugriff auf den im Modultableau gespeicherten Code.

Hinzufügen zu Modulscripten

Um eine Funktion oder Variable zum Modul hinzuzufügen, die in einem anderen Skript verwendet werden kann, geben Sie den Namen der Modultabelle gefolgt von einem Punkt und dem Namen der Funktion oder Variable ein, wie in TestModule.myVariable. Die Verwendung des Punktoperators ist eine weitere Möglichkeit, Code in eine Tabelle einzufügen, sodass andere Skripte auf diesen Code zugreifen können, wann immer die Modultabelle zurückgegeben wird.

local TestModule = {}
-- Fügt eine Variable zur 'TestModule'-Tabelle hinzu
TestModule.myVariable = 100
-- Fügt eine Funktion zur 'TestModule'-Tabelle hinzu
function TestModule.doTask(player)
-- Platzhaltercode
end
return TestModule

Gültigkeitsbereich in Modulscripten

Damit eine Modul-Funktion oder -Variable in einem externen Skript verwendet werden kann, darf nicht local eingegeben werden.

Das Eingeben von local vor Variablen und Funktionen bedeutet, dass sie nur von diesem Skript verwendet werden können. Während dies eine gute Praxis für die meisten Skripte zur Reduzierung von Fehlern und zur Fehlersuche ist, können Sie Modul-Skriptfunktionen und -variablen nicht lokal machen.

Jeder Code, der nur von diesem Modulskript verwendet wird, sollte dennoch local enthalten. Zum Beispiel enthält der folgende Code die lokale Variable difficultyModifier, die nur in diesem Modulskript verwendet werden kann, und die Funktion getCoinReward(), die in Skripten außerhalb des Moduls verwendet werden kann.

local RewardManager = {}
-- Nur im Modulskript verwendbar
local rewardCoins = 50
-- Nur im Modulskript verwendbar
local difficultyModifier = {
easy = 0.5,
normal = 1,
hard = 2
}
-- In anderen Skripten verwendbar
function RewardManager.getCoinReward(difficulty)
local coins = difficultyModifier[difficulty] * rewardCoins
return coins
end
return RewardManager

Verwenden von Modulen in anderen Skripten

Ein Modulskript kann von sich aus keinen Code ausführen — es muss in einem anderen Skript mit dem Schlüsselwort require() geladen werden. Die Funktion require() akzeptiert ein Argument, den Speicherort des Modulscripts im Explorer.

Um ein Modul zu verwenden, setzen Sie in einem separaten Skript eine Variable gleich require(moduleScript).

local MyModule = require(ServerStorage.ModuleScript)

Jetzt enthält die Variable MyModule die Modultabelle, die in diesem Modulskript erstellt wurde. Um Funktionen und Variablen aus dieser Tabelle zu verwenden, geben Sie den Variablennamen gefolgt von einem Punkt und dem genauen Namen dessen, was in diesem Modulskript verwendet werden soll, ein, wie MyModule.myFunction(). Wenn das Skript ausgeführt wird und diese Zeile erreicht, wird auf diese spezifische Funktion oder Variable zugegriffen, die in der Modultabelle gespeichert ist.

local MyModule = require(ServerStorage.ModuleScript)
MyModule.myFunction()

Beispiel für RewardManager

ModuleScript - RewardManager
local RewardManager = {}
-- Nur im Modulskript verwendbar
local rewardCoins = 50
-- Nur im Modulskript verwendbar
local difficultyModifier = {
easy = 0.5,
normal = 1,
hard = 2
}
-- In anderen Skripten verwendbar
function RewardManager.getCoinReward(difficulty)
local coins = difficultyModifier[difficulty] * rewardCoins
return coins
end
return RewardManager
Script - TreasureChestScript
local ServerStorage = game:GetService("ServerStorage")
-- Lade Modulskript
local RewardManager = require(ServerStorage.RewardManager)
-- Ruft Funktion aus dem Modulskript auf
local coins = RewardManager.getCoinReward("easy")
print("Sollte " .. coins .. " Münzen vergeben")

Allgemeine Fehlersuche

Einige der Tipps hier beziehen sich auf häufige Probleme beim Arbeiten mit Modulscripten. Denken Sie daran, dass Modulscripte ein kompliziertes Thema mit mehr Nuancen sein können. Für weitere Details siehe diesen technischeren Leitfaden zu Modulscripten.

Problem: Erhalten Sie eine Fehlermeldung mit: "Mögliche unendliche Wartezeit" oder "kein gültiges Mitglied".

  • Überprüfen Sie die Schreibweise des Modulscripts, wo es geladen wird. require() muss den genauen Pfad und die Schreibweise des Modulscripts enthalten, das möglicherweise anders benannt ist als die Modultabelle.

Problem: Erhalten Sie eine Fehlermeldung mit: "Versuch, global zu indizieren".

  • Stellen Sie in allen Skripten, die ein Modulskript verwenden, sicher, dass es mit der Funktion require() geladen wird. Andernfalls kann dieses Skript keine Funktionen und Variablen aus dem Modulskript verwenden.

Zusammenfassung

Modulscripte in Roblox sind eine Methode, die Programmierer verwenden, um Code zu organisieren und wiederzuverwenden. Ein Modulskript wird oft in ServerStorage (oder ReplicatedStorage für clientbasierte Interaktionen) gespeichert. Von dort aus können andere Skripte Funktionen und Variablen aufrufen, die in diesem Modulskript gespeichert sind.

Zum Beispiel kann ein Spiel Punkte an Spieler vergeben, die Objekte sammeln. Ein Modulskript kann den Code zur Vergabe von Punkten verwalten. Dann können Skripte für verschiedene Arten von Objekten einfach die Funktion des Modulscripts aufrufen. Dies reduziert die Notwendigkeit, Code zwischen Skripten wiederzuverwenden, was den Code leichter verständlich und wartbar macht.

©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.