← SEARCHABLE ARCHIVE
Unreal Engine · 2026-07-01

Rolle von GameMode, PlayerController, GameInstance

Unreal Framework, gesehen durch das Menü und die Kampfstruktur von ProjectTB

INTERACTIVE READING MODE →

Die in diesem Blog verfassten Artikel wurden mit dem Ziel erstellt, zu unterrichten. Außerdem können die Informationen im Artikel falsch sein, also seien Sie bitte vorsichtig.

Wenn Ihr Unreal-Projekt wächst, können Sie ganz einfach nach dem Zufallsprinzip Funktionen zu GameMode, PlayerController und GameInstance hinzufügen. ProjectTB hat die Verantwortlichkeiten jeder Klasse neu organisiert und das Hauptmenü vom Kampf getrennt.

GameMode sind die Regeln der aktuellen Welt

TBMainMenuGameModeist für den Ablauf des Hauptmenüs verantwortlich,TBGameModeist verantwortlich für die Expeditions- und Kampfregeln. Ein GameMode übernimmt nicht alle Menüs, Charakterauswahl und Kämpfe.

MainMenu World
TBMainMenuGameMode
TBMainMenuPlayerController
TBMainMenuWidget

Battle World
TBGameMode
TBPlayerController
TBExpeditionHUDWidget

GameMode entsteht, wenn sich die Welt verändert. Daher ist es gut, die Regeln der Welt einzubeziehen, z. B. das Gewinnen oder Verlieren der aktuellen Schlacht, Einsatzbeschränkungen und die Schaffung von Feinden.

PlayerController ist die Eingabe und Absicht des Spielers

Der PlayerController verbindet Befehle, die der Spieler der Welt gibt, wie z. B. Mausklicks, Auswahlen und Kameraeingaben. In ProjectTB wurden die Linksklick-Auswahl von Verbündeten und die Schwebeinformationen des Feindes getrennt, und die Bezeichnung des Kampfziels wurde getrennt gehalten.

Anstatt beim Drücken einer UI-Taste die gesamte Logik in ein Widget zu packen, ist es sicherer, eine Anfrage an die Verifizierungsfunktion von Controller oder GameMode zu senden.

GameInstance überlebt zwischen den Welten

GameInstance bleibt auch dann erhalten, wenn Sie die Karte verschieben. Es ist gut, Objekte mit einer längeren Lebensdauer als die Welt, wie Kampagneninformationen oder globale Subsysteme, aus dem Hauptmenü auszuwählen.

Wenn Sie jedoch alle globalen Variablen in GameInstance einfügen, wird daraus eine riesige Managerklasse. Unabhängige Verantwortlichkeiten wie Benutzeroberfläche und Speicher sind vorhandenUGameInstanceSubsystemkann getrennt werden.

Das Kriterium für die Wahl einer Klasse ist kein bequemer Ansatz. Sie müssen entscheiden, in welcher Welt die Daten leben sollen, wer die Regeln überprüfen soll und wem die Eingaben gehören sollen.