• 2Minuten
blank

Normalerweise wird bei einem GameMaker-Projekt alles beim Start geladen. Doch manchmal hat man externe Dateien, etwa 3D-Objekte und deren Texturen. Diese müssen extra geladen werden. Statt einfach nur „Loading…” zu schreiben, kann man auch seinen eigenen Ladebalken und Prozentangabe programmieren.

Die Theorie

Zunächst brauchen wir eine Liste aller Dateien, die geladen werden sollen. Hierfür eignet sich ein Array. Dann müssen wir diese Liste schrittweise abarbeiten. Hierfür nutzen wir in GameMaker einen Alarm. Der Rest ist simple Mathematik, zumal wie den Fortschritt nicht an der Dateigröße, sondern der Anzahl der Dateien angeben.

Hier mein Projekt zur Veranschaulichung:

Der Code

Der Code stammt 1:1 aus einem aktuellen Projekt, an dem ich arbeite.

Create-Event

Zunächst definieren wir die Objekte in unserem Array. Theoretisch könnte man auch die Ordner durchsuchen und alle .obj-Dateien einladen, aber da ich bei Tests nicht immer alle brauche, fand ich diese Version (für mein Projekt) einfacher. Dann haben wir noch zwei Variablen: Wir geben an, wie viele Objekte bereits geladen wurden und ob alle Dateien geladen wurden. Nun brauchen wir noch den Alarm.

Außerdem müssen wir noch Variablen für den Ladebalken definieren:

Alarm-Event

Da meine OBJ-Dateien in verschiedenen GM-Objekten und Räumen genutzt werden, sind es globale Variablen. Somit ist die manuelle Liste aus dem Create-Event durchaus sinnvoll.

Im Alarm-Event gehen wir das Array durch und laden schrittweise die Objekte. So lange nicht alle Objekte geladen sind, ruft sich der Alarm laufend selbst auf. Am Ende, wenn es komplett ist, kann man irgendetwas machen. In meinem Beispiel wird im Draw-Event aus dem Ladebalken ein Start-Button.

Draw-Event

Das ist nur der Teil mit der Überschrift und dem Ladebalken inklusive Prozentangabe. Am Anfang haben wir die Überschrift. Dann berechnen wir den Fortschritt.

Der Ladebalken soll sich ja füllen. Somit haben wir die 100%-Breite und die Füllung, welche davon abhängt, was bereits geladen wurde. Anschließend müssen wir den Ladebalken entsprechend zeichnen.

Natürlich kann der Code noch weiter vereinfacht werden. Du musst es auch an dein Projekt anpassen, aber ich denke, dass es durch diese kleine Vorlage kein Problem sein sollte.

Weiterführende Links

Timing in GameMaker-Projekten
Mehrfache Sortierung von Arrays
Texte im Kreis “tippen”
Shader-Programmierung 1: Grundlagen und Sprites
Shader-Effekt: Tunnel mit Maussteuerung

Autor

Abonnieren
Benachrichtige mich bei
guest

0 Comments
Inline Feedbacks
Alle Kommentare anzeigen