Donnerstag, 20. März 2014

Zugreifen auf Variablen anderer Instanzen

Erstellen einer Instanz aus einer anderen Instanz. Gleich darauf sollen die Variablen der Neuen Instanz verändert werden.


var my_instanceID;
my_instanceID = instance_create(320, 200, obj_enemy);
my_instanceID.speed = 10;
my_instanceID.direction = random(360);



Bei diesem Beispiel wird in der ersten Zeile unsere Variable angelegt, in der wir uns die ID der Neu erstellten Instanz zwischenspeichern.
In der zweiten Zeile erstellen wir an den Koordinaten x=320,y=200 eine Instanz vom Objekt obj_enemy und Speichern Ihre InstanzIdentifizierungsNummer (InstanzID) in die Variable my_instanceID.
In den Zeilen 3 und 4 wird verdäutlicht, wie man die Werte der neu erstellten Instanz Verändern kann.
Dabei wird der InstranzID gefolgt von einem Punkt (.) und der Instanz Variable der jeweilige Wert definiert.

Die InstanzID ist eine Individuelle Adresse einer Objekt-Instanz. Würde den wert der Variable my_instanceID ausgeben, könnte das Ergebniss soetwas sein: (16040)

Wir könnten jetzt auch anstatt der Variable dierekt die ID der Instanz eingeben. Das würde dann etwa so aussehen:

(16040).speed = 10;
(16040).direction = random(360);


Die Werte von bereits vorhandenen Instanzen verändern.


Um die Werte einer Instanz im Spielfeld zu ändern, muß man diese ers finden. Dazu gibt es in Game Maker mehrer Möglichkeiten. Eine ist es alle Instanzen zu durchsuchen:

with(o_Enemy) {
speed += 5;
}:

Mit dieser "Schleife" wird die Geschwindigkeit um 5 für jede Instanz der Objekts o_Enemy erhöht.

Eine Andere möglichkeit ist es ein Objekt in der Nähe von x,y Koordianten zu finden.
Dazu kann man den Befehl instance_nearest(x,y,obj) benutzen.

Weitere Insteressante Instanz Befehle


instance_find(obj,n)
instance_exists(obj)
instance_number(obj)
instance_position(x,y,obj)
instance_nearest(x,y,obj)
instance_furthest(x,y,obj)
instance_place(x,y,obj) 

instance_create(x,y,obj)
instance_copy(performevent)
instance_destroy()
instance_change(obj,perf)
position_destroy(x,y)
position_change(x,y,obj,perf)

Wichtiger Nachtrag:
Wenn die Variable in Instanz A aus einer Instanz B angesprochen werden soll, dann darf Sie auch nicht in mit dem Befehl "var" initialisiert werden. Denn dann ist diese nur innerhalb den Scripts/Events gültig. Stattdessen sollte die Variable einfach mit Variable=Wert definiert werden.

Was ich vor kurzem herausgefunden habe, man kann Variablen Werte auch wie in der programmier Sprache C zuweisen, indem man zB Variable:=Wert benutzt. Das kann bei der Übersichtlichkeit helfen.

Keine Kommentare:

Kommentar veröffentlichen