Variablen ja, aber wohin damit?

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

  • Variablen ja, aber wohin damit?

    Hab mal ne Frage zu den Variablen. Und zwar weiss ich nicht ganz wohin damit. Mach ich die Variable im create-event als "bla" oder packe ich sie in den code als "var bla"?
    Aus meiner Sicht ist es übersichtlicher im create-event, aber es ginge auch im code selbst. Gibt es Vor- und Nachteile? Wie ist es mit der Performance? Ist es besser wenn die Variable im aus dem create-event ausgelesen wird oder besser im code selbst und dabei ständig neu erstellt wird?
  • Also ich mache alle Variablen, die ich im gesammten Objekt braucht im Create (mit Kommentaren in welchem Event sie benötigt werden, falls der Name das nicht verrät)

    GML-Quellcode

    1. bla = 0;

    Und sonst nutzte ich immer var _bla (Unterstich+name).

    GML-Quellcode

    1. var _bla = 0;

    Außerdem habe ich noch ein obj_gameInit indem ich alle "globals" habe

    GML-Quellcode

    1. global.bla


    Ich denke mal, dass man immer var nehmen sollte, wenn es einem möglich ist. (man müsste mal im Debugger schauen, wie GM das regelt)
  • Du kannst ganz unten im RessourceTree auf Makros klicken und dort entweder bei Default, All configurations (oder noch bei einem eigenen Set), ein Marko erstellen. Ein Makro ist ein Konstant, bedeutet, dass du eine Variable hast, die Schreibgeschützt ist. Yoyogames bezeichnet dies auch eher als Read-Only.

    Übrigens:
    Hat man eine Instanzweite Variable erstellt, kann man auf selben Namen eine Lokale (mit var erstellt) deklarieren und verändert aber nicht die Instanzvariable dadurch, heißt: In anderen Events ist die Variable immer noch auf'm selben Wert, unabhängig von der lokalen. Dies ist auch sehr nützlich für Skripte.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Zum Thema Macro: docs.yoyogames.com/source/dadiospice/001_advanced use/010_macros.html
    Zum Thema emum: docs.yoyogames.com/source/dadiospice/002_reference/001_gml language overview/data types.html

    Ein Marco ist global und konstant, deswegen GROSS schreiben.

    Ein Enum ist eine Art Sammlung.
    Zb.

    GML-Quellcode

    1. enum auto{
    2. vw,
    3. audi,
    4. skoda,
    5. };

    indem Fall wäre vw 0, audi 1, und skoda2

    du kannst aber auch:

    GML-Quellcode

    1. enum auto{
    2. vw = 10,
    3. audi = 11,
    4. skoda = 100000,
    5. };


    Das ist ganz praktisch, wenn du die ein eigenes Struct (wie ZB in C) zusammenbauen willst, oder global zb Kosten für Türme definieren willst (Tower Defense)
  • Noch was ganz grundlegendes, dass hier nicht erwähnt wurde. Wenn du eine variable im step event deklarierst, dann ist die nur für den einen step da, wird zerstört und dann wieder erstellt, wenn der code es verlangt. Das ist der größte Unterschied zwischen create und step event. Es macht auch keinen performance unterschied oder so etwas. Im Create event wird gesagt, welche attribute eine instanz hat. Auf die kann das Step event zugreifen oder ggf noch für einen step eine neue erstellen, falls es nötig ist.
    Wenn ich eine Variable nur in einem ganz bestimmten Fall brauche und auch später nicht mehr drauf zugreifen muss, dann erstelle ich sie im step event mit "var irgendwas = xy". Praktisches Beispiel habe ich grade keines zur hand, aber wenn iwo ganz tief in einem if zweig eine kleine variable für irgendeine berechnung nötig ist, aber sonst nicht, dann mach ich das.

    PS: im step event müssen solche variablen immer mit var davor geschrieben werden, damit er nicht eine instanzvariable aus dem create event sucht (error), im create event checkt er das aber auch ohne var davor. Da braucht er nur das globalvar falls es eben global sein soll.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)