Variablenname in Variable speichern

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

  • Variablenname in Variable speichern

    Hey Leute,
    mein Gehirn ist nur noch Matsch wenn ich eine weitere Minute an meinem Problem herumprobiere, bitte helft mir.

    Zum Problem:
    Ich habe die Variable other_id , welche eine id von einer beliebigen Instanz gespeichert wird.
    Jetzt zwei Variablen, die eine Variable von der beliebigen Instanz speichert, so:

    beliebigeInstanz.var1 = "munition"
    beliebigeInstanz.var2 = 5



    Jetzt möchte ich den Wert von der entnommen Variable ändern und wieder zurück schicken, also z.B.

    var1 = "munition"
    var2 = 7


    Will ich aber jetzt den Wert 7 so zurück schicken geht es nicht.

    other_id.var1 = var2

    habe es auch schon so probiert, aber hinter other_id. kann man keine Funktionen benutzen ;(

    other_id.string(var1) = var2
    other_id.asset_get_index(var1) = var2
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.
  • Das funktioniert ebenfalls nicht, da ich in einem with-statement keine Funktionen (wie string(...) = ...) benutzen kann. Die Änderung kann ich auch nicht machen, da dann der Code nicht mehr flexibel ist, d.h. ich kann keine beliebigen Variablennamen mehr "speichern".
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.
  • GML-Quellcode

    1. asset_get_index(name);

    hatte ich auch ewig Schwierigkeiten mit, bis ich diese Funktion gefunden habe. Erwartet einen String des Objektnamen und liefert den Index des Objektes (oder Sprite, Script, ...) zurück.
    Ist nicht auf Objekte beschränkt, sondern kann mit jedem "Asset" angewendet werden.
    Vielleicht noch am Rande, es liefert die ID eines Objektes, nicht die einer Instanz. Wenn ich mich richtig erinnere, verhält sich der nachfolgende Code ähnlich wie ein Broadcast an alle Instanzen dieses Objektes.

    sollte funktionieren:

    GML-Quellcode

    1. var obj = asset_get_index("obj_Enemy");
    2. with(obj)
    3. {
    4. //variablenänderung
    5. //funktionen etc
    6. }

    von:
    yoyogames.com

    EDIT: Ohje, scheinbar hast du sie selbst schon gefunden, zu schnell überflogen. Jetzt bin ich doch ein wenig verwirrt, weshalb der Code von Aku_ nicht funktioniert. Sind die Variablen der Instanz bereits gesetzt?

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von domis4 ()

  • Verdammt, mir ist aufgefallen, dass mein Code/ so wie ich es will gar nicht funktionieren kann.
    ich hab hier mal ein Teil es Originalcodes:

    o_we_enemy

    GML-Quellcode

    1. if selected = 1
    2. {
    3. [...]
    4. o_we.other_id = id
    5. o_we.var1 = "maxspeed"
    6. o_we.var11 = maxspeed
    7. }


    o_we

    GML-Quellcode

    1. [...]
    2. other_id.var1 = keyboard_string


    Es kann eben nicht funktionieren, da es sich bei var1 in o_we sich um eine nicht vorhandene Variable vom Objekt o_we_enemy mit dem Namen "var1" handelt müsste. Ich müsste also das andere Objekt(other_id) aufrufen, dann die var1 so umändern, dass es sich um maxspeed handelt und dann den Wert geben. Leider geht das nicht, versuche das ganze mal per Script zu lösen.
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.