Roblox für Unity-Entwickler

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

Diese Seite enthält Informationen, die erfahrenen Unity-Entwicklern helfen, mit Roblox zu beginnen, einschließlich grundlegender Orientierung, einem konzeptionellen Vergleich und wichtigen Unterschieden zwischen den beiden Plattformen.

Sich orientieren

Die Benutzeroberfläche von Unity mit Markierungen, um die verschiedenen Fenster und Panels zu zeigen. Die Benutzeroberfläche von Roblox Studio mit Markierungen, um die verschiedenen Fenster und Panels zu zeigen.

Das Hierarchie-Fenster von Unity und der Explorer von Roblox Studio sind die Hauptfenster zur Organisation von Elementen in 3D-Szenen:

  • Beide ermöglichen es Ihnen, Objekte (zum Beispiel Charaktere und Umgebungsassets) zu verwalten und zu organisieren.
  • Beide verwenden eine Baumstruktur für die Eltern-Kind-Beziehungen zwischen Objekten.

Das Hierarchie-Fenster hat jedoch keine vordefinierte Struktur, während das Explorer-Fenster eine strenge Struktur hat. Es könnte hilfreich sein, das Explorer-Fenster als eine Kombination aus Unitys Hierarchie- und Projekt-Fenstern zu betrachten, wobei der Workspace-Ordner das am leichtesten erkennbare Element ist.

Ähnlich überschneiden sich der Asset Manager und die Toolbox von Roblox mit dem Projekt-Fenster von Unity. Der Asset Manager ermöglicht es Ihnen, alle Assets innerhalb Ihres Spiels zu verwalten, während die Toolbox Ihnen den Zugriff auf alle veröffentlichten Assets ermöglicht. Die Toolbox ermöglicht es Ihnen auch, im Creator Store nach Assets von Roblox oder der Community zu suchen, ähnlich wie im Unity Asset Store.

Philosophische Unterschiede

Roblox ist eine "Simulations-Engine" und kein traditioneller Spiel-Engine. Unity GameObjects und Roblox Parts dienen beide als grundlegende Bausteine zur Erstellung von Objekten in einer 3D-Umgebung, aber in der Praxis sind die beiden ziemlich unterschiedlich:

  • Darstellung: GameObjects in Unity sind ein höheres Konzept für jedes Objekt in einer Szene, während Parts in Roblox dazu gedacht sind, physische Objekte wie Holzblöcke und Plastikkugeln darzustellen, anstatt abstrakte Geometrie wie primitive Objekte in Unity.
  • Physik: Um Physiksimulationen in Unity durchzuführen, fügen Sie Komponenten wie Rigidbody und Collider zu einem GameObject hinzu. In Roblox sind die Physik in den Parts-Datentyp integriert; die Engine behandelt Interaktionen automatisch.

Sie können den Unterschied sofort sehen, wenn Sie ein GameObject und ein Part erstellen. Das GameObject hat nichts weiter als eine Position, Rotation und Skalierung. Das Part hat dieselben Informationen – plus ein Material und eine Farbe, Werte für Reflexion und Transparenz, Masse und Form und vieles mehr. Ein Part in etwas zu verwandeln, das mehr einem leeren GameObject ähnelt, bedeutet, viele integrierte Eigenschaften zu entfernen. Umgekehrt können Sie ein GameObject erstellen, das einem Part sehr ähnlich sieht, indem Sie MeshFilter, MeshRenderer, Collider und Rigidbody-Komponenten hinzufügen.

Aus einer Skriptperspektive ist GameObject am ähnlichsten der Roblox Instance, der Basisklasse für alle anderen Roblox-Klassen, aber da Sie keine Objekte vom Typ Instance erstellen (und können), ist der Vergleich nicht besonders praktisch.

Ein weiterer Vergleich ist das Unity GameObject zum Roblox Model. Modelle fungieren als Container für eine Sammlung von miteinander verbundenen Teilen, ähnlich wie Sie eine Eltern-Kind-Beziehung zwischen vielen GameObjects in Unity herstellen könnten. Sie geben eines der Teile des Modells als sein Hauptteil an, um den Drehpunkt zu definieren. Modelle enthalten auch Skripte, Animationen, Soundeffekte, Aufforderungen, Einschränkungen, Partikelausstoßer und mehr.

Zum Beispiel könnte ein Unity GameObject Komponenten für ParticleSystem, Physics3D, SpringConstraint und ein Skript haben. Im Hierarchie-Fenster sehen Sie ein einzelnes GameObject mit dem Namen SpringyFireball. Das Inspektor-Fenster zeigt die Sammlung von Komponenten und Eigenschaften.

In Roblox könnte ein vergleichbares SpringyFireball-Modell im Explorer-Fenster so aussehen:

Model
|- ParticleEmitter
|- MeshPart
|- SpringConstraint
|- ClickDetector
| |- Script

Die Philosophie von Roblox, dass Physik standardmäßig vorhanden ist, erstreckt sich auf den Prozess des Bauens von 3D-Modellen. In Roblox ist das Verschweißen mehrerer Teile zu einer Baugruppe eine hervorragende Möglichkeit, schnell Dinge zu erstellen, da Roblox die geschweißten Teile als einen einzigen starren Körper behandelt. Dieser Ansatz ist in Unity nicht verfügbar.

Anstatt standardisierte metrische Einheiten für Länge und Masse zu verwenden, verwendet Roblox hypothetische Einheiten, die als Studs und Roblox-Masseneinheiten (RMUs) bezeichnet werden. Für ungefähre metrische Umrechnungen und Empfehlungen zur Verwendung siehe Einheiten.

Der Standort ist wichtig

Roblox-Spiele sind standardmäßig Mehrspieler, daher enthält Roblox Studio viele verschiedene Speicherorte mit spezifischen Verhaltensweisen. Für weitere Informationen siehe Client-Server-Laufzeit und Objektorganisation.

LocationDescription
WorkspaceStellt die 3D-Welt des Spiels dar. Kann Server-Skripte ausführen, die direkt an Objekte angehängt sind und deren Verhalten steuern.
ReplicatedFirstEnthält Objekte, die vor allem anderen an den Client repliziert werden. Dieser Standort ist ideal für die absolut minimale Menge an Objekten und Client-Skripten, die erforderlich sind, um einen Ladebildschirm anzuzeigen.
ReplicatedStorageEnthält Objekte, die sowohl an den Client als auch an den Server repliziert werden. Dieser Standort ist ideal für Skripte mit einem RunContext von Client, Client Modul-Skripte und Modul-Skripte, die Sie sowohl auf dem Server als auch auf dem Client verwenden möchten. Lokale Skripte werden von diesem Standort aus nicht ausgeführt.
ServerScriptServiceEnthält Server-Skripte. Dieser Standort ist ideal für Skripte, die auf serverseitige Funktionen oder Objekte zugreifen müssen, wie z. B. Spiel-Logik und Cloud-Speicher.
ServerStorageEnthält serverseitige Objekte. Dieser Standort ist ideal für große Objekte, die nicht sofort an Clients repliziert werden müssen, wenn sie einem Spiel beitreten. Skripte werden von diesem Standort aus nicht ausgeführt, aber Sie können serverseitige Modul-Skripte hier speichern.
StarterPlayer ⟩ StarterCharacterScriptsEnthält Lokale Skripte, die ausgeführt werden, wenn der Charakter erscheint.
StarterPlayer ⟩ StarterPlayerScriptsEnthält Lokale Skripte, die ausgeführt werden, wenn der Spieler dem Spiel beitritt.
StarterGuiEnthält GUI-Elemente, die der Client anzeigt, wenn er das Spiel lädt. Lokale Skripte können von diesem Standort aus ausgeführt werden.
StarterPackEnthält in der Regel nur Werkzeuge, kann aber auch Lokale Skripte zur Einrichtung von Spieler-Rucksäcken enthalten.

Skripting

Roblox-Spiele unterstützen drei verschiedene Arten von Luau-Skripten:

  • Client-Skripte

    Diese Skripte werden auf dem Client ausgeführt, und der Server hat keine Sichtbarkeit in ihr Verhalten. Aus historischen Gründen können diese Skripte die Form von LocalScripts oder Scripts mit einem RunContext-Wert von Client annehmen. Client-Skripte befinden sich typischerweise in ReplicatedStorage, StarterPlayerScripts oder StarterCharacterScripts.

  • Server-Skripte

    Diese Skripte werden auf dem Server ausgeführt, und der Client hat keine Sichtbarkeit in ihr Verhalten. Server-Skripte haben einen RunContext-Wert von Server und befinden sich typischerweise in ServerScriptService, deren Inhalte nicht an den Client übertragen werden.

  • Modul-Skripte

    Diese Skripte sind wiederverwendbare Codeabschnitte, die genau einen Wert zurückgeben, typischerweise eine Funktion oder Tabelle (oder eine Tabelle von Funktionen). Anstatt Code in Client- und Server-Skripten zu duplizieren, verwenden Sie Modul-Skripte, um Code und Daten zwischen den beiden zu teilen. Modul-Skripte befinden sich oft in ReplicatedStorage, können aber auch an anderen Orten leben, wenn Sie Code zwischen Skripten auf der gleichen Seite der Client-Server-Grenze teilen möchten.

Unity hat nicht das Konzept verschiedener Skripttypen. Wenn Sie sich entscheiden, ein Mehrspielerspiel zu erstellen, verwendet Unity seine Netzwerkbibliotheken, um anzuzeigen, wann ein GameObject (und seine Skripte) exklusiv für den Server sein sollten.

In Unity ist ein Großteil der Funktionalität der Engine über die Methoden von MonoBehaviour verfügbar. Zum Beispiel, um Code vor der Render-Schleife auszuführen, fügen Sie Code zur Update()-Methode hinzu. Um Physik-Kollisionsereignisse zu behandeln, fügen Sie Code zur OnCollideEnter()-Methode hinzu.

Roblox-Skripte sind ereignisgesteuerter. Sie greifen auf ähnliche Funktionalität zu, indem Sie sich bei Diensten anmelden und auf Updates hören.

C# und Luau

Für das Skripting verwendet Unity C#. Roblox verwendet Luau, eine Skriptsprache, die von Lua 5.1 abgeleitet ist.

Im Vergleich zu C# ist Luau allmählich typisiert und hat im Allgemeinen eine weniger ausführliche Syntax. In größeren Projekten kann jedoch das allmähliche Typisieren Kategorien von Fehlern einführen, die stark typisierte Sprachen wie C# vermeiden, daher sollten Sie in Roblox-Skripten strenge Typprüfung aktivieren.

Für grundlegende Syntaxunterschiede zwischen den Skriptsprachen siehe Luau und C#-Vergleich.

Luau-Codebeispiel

The following Luau code sample demonstrates how to, after a player equips a fishing pole, listen for user input (in this case, the E key) and call additional functions:

local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Get a module script from ReplicatedStorage that returns a single function
local performSomeAction = require(ReplicatedStorage.performSomeAction)
-- Assumes that this script is a child of the fishing pole
local fishingPole = script.Parent
local ACTION_CAST = "Cast"
-- Check that the key is down, then call another function
local function castLine(_actionName, inputState, _inputObject)
if inputState == Enum.UserInputState.Begin then
performSomeAction()
end
end
-- Only enable the action when the player equips the fishing pole
fishingPole.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_CAST, castLine, true, Enum.KeyCode.E)
end)
-- Disable the action when the player unequips the fishing pole
fishingPole.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_CAST)
end)

Das Roblox-Skript kann relativ prägnant sein, da Roblox viele integrierte Annahmen hat: ein Player mit einem Humanoid-Charakter, der mit dem Server verbunden ist und Tools ausrüsten kann. Diese Annahmen existieren in Unity nicht, sodass die Implementierung sehr unterschiedlich wäre.

Assets

Unity und Roblox unterstützen beide den Import von benutzerdefinierten Meshes und Modellen im .fbx-Format. Bestimmte Arten von Assets erfordern möglicherweise spezifische Konfigurationen und Exporteinstellungen von Ihrer Drittanbieter-Modellierungssoftware. Für weitere Informationen siehe die folgenden Seiten:

In Unity importieren Objekte in Ihr Assets-Verzeichnis, das im Projekt-Fenster sichtbar ist. In Roblox importieren Assets in Ihren Workspace und in die Toolbox oder den Asset Manager.

Roblox bietet auch ein Open-Source-Blender-Plugin, um den Importprozess zu optimieren.

Transformationen

Unity’s Transformation und Roblox's CFrames dienen ähnlichen Zwecken beim Darstellen von 3D-Transformationen von Objekten:

  • Sowohl Transformationen als auch CFrames repräsentieren die Position und Rotation eines Objekts im 3D-Raum. Transformationen beinhalten Skala, während Roblox eine BasePart.Size-Eigenschaft verwendet, die nicht Teil des CFrame ist.
  • Beide unterstützen die Multiplikation für komplexe Transformationen und haben integrierte Methoden für andere Manipulationen.

Zusammenarbeit

In Unity arbeiten Sie mit standardmäßigen Versionskontrollsystemen oder kostenpflichtigen Diensten wie Unity Version Control zusammen.

Roblox-Dateien leben in der Cloud (obwohl Sie Kopien exportieren können), daher bietet Roblox Studio integrierte Arbeitsabläufe für die Zusammenarbeit für gleichzeitige Bearbeitung, Gruppenverwaltung, Berechtigungen, Skripterstellung und mehr. Siehe Zusammenarbeit.

Plugins

Ähnlich wie Unity-Tools unterstützt Roblox Studio Plugins, die verschiedene Aspekte des Entwicklungsprozesses vereinfachen oder Ihnen zusätzliche Kontrolle geben können. Plugins sind im Creator Store verfügbar, genau wie Assets, viele kostenlos.

Glossar

UnityRobloxAnmerkungen
SzenePlace
GameObjectPart oder ModelSiehe Philosophische Unterschiede.
PrefabPaket
TransformationCFrameCFrame enthält keine Skalierungsinformationen. Siehe Transformationen.
HierarchieExplorer
InspektorEigenschaften
Szenenansicht3D-Viewport
Spielansicht3D-ViewportDer Viewport wechselt in eine Spielansicht, wenn Sie Ihr Spiel testen.
ProjektfensterAsset Manager oder Toolbox
Terrain-InspektorTerrain-Editor
SpawnpunktSpawnLocation
KonsoleOutput
Asset StoreCreator Store
OverlaysToolbar
WerkzeugPlugin
©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.