Variable beim Erstellen zuweisen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Variable beim Erstellen zuweisen

    Da die Suche nichts ergab werd ich jetzt mal meine Frage posten.

    Ist es möglich, bei instance_create der instance die erstellt wird auch noch gleich eine Variable zu geben? Da ich ein Object erstelle, dass es schon mehrmals gibt kann ich nicht einfach z.B. obj_erstellt.variable = 2 machen.

    Sry wenn das Problem leichter ist als es für mich ist. Hab erst grad neu angefangen Gml zu lernen^^
  • instance_Create gibt eine id zurück. über diese kannst du dann auf die erstellte instanz zugreifen und -z.B.- Variablen setzen/ändern.
    www.glowingorb.de
    „Wenn es im Universum noch irgendwo intelligente Lebewesen gibt, dann kennen sie vielleicht Schach, höchstwahrscheinlich jedoch GO

    (Schachweltmeister Emanuel Lasker)
  • Man könnte es so machen:

    GML-Quellcode

    1. objekt=instance_create(x,y,object1);
    2. objekt.test=1;

    Hier habe ich einer Variable (objekt) die id des erstellten Objekts zugewiesen.
    Über diese id kann ich das erstellte Objekt ansprechen und ihm z.B. der Variable "test" einen Wert zuweisen.

    Edit: Oder so:

    GML-Quellcode

    1. with (instance_create(x,y,object1)){test1=1;test2=1}
  • Alternativ kannste das auch so wie ich machen und dir nen quasi-Konstruktor per Script basteln.
    Da kommt dann der Code von Moolt rein plus am Ende noch ein "return objekt".

    z.B.
    Sctiptcode:

    GML-Quellcode

    1. objekt=instance_create(x,y,argument0);
    2. objekt.test=argument1;
    3. return objekt;


    Aufruf: my_instance_create(object1, parameter1);

    parameter1 sowie argument 1 ist deine Variable die du uebergeben willst und argument0 dein Objekt.
  • Danke hat geklappt.

    Aber ich hab trotzdem noch ne Frage, ich hab jetzt die zweite von Moolt, doch beim object, das erstellt wird musste ich den Create event durch einen Alarm um einen Step verschieben, da die Variable die ich beim object ändern will sonst noch garnicht existiert. Kann man i_^wie machen das die variable noch gar nicht im andern object vorhanden sein muss?

    Sry wenns ein bisschen schlecht formuliert ist :huh:
  • Jop, das ist über globale Variablen möglich, indem du einfach bevor du die Instanz erstellst einer globalen Variabel den benötigten Wert gibst und diese dann im Create Event der Instanz abfragst.
    int (*x(*x(int))[5])(int*);
    Confused? Yes, it's C!
  • Es geht auch vielmehr um den Ablauf, man kann im Create Event einer Instanz nicht auf diese Variablen zugreifen, da das Create Event sofort nach dem aufrufen von instance_create() ausgeführt wird.

    GML-Quellcode

    1. instance_create(x,y,object);
    2. //Jetzt wird das Create Event der Instanz iid ausgeführt
    3. iid.test=1;
    4. //Erst jetzt ist die Variable <test> vorhanden
    int (*x(*x(int))[5])(int*);
    Confused? Yes, it's C!
  • Was die Jungs über mir mit den globalen Variablen sagen wollten:

    GML-Quellcode

    1. global.variable = 42;
    2. instance_create(x,y,object);

    Alternativ gäbe es noch die Möglichkeit: Verschiebe den Create Event-Code in ein User Event.

    GML-Quellcode

    1. with (instance_create(x,y,object)) {
    2. variable = blubb; // Variable setzten
    3. event_user(0); // Dann das "Pseudo" Create Event ausführen
    4. }