Depth Problem - Instanz von gleichem Objekt ist unter anderem obwohl später created

  • Allgemein

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

  • Depth Problem - Instanz von gleichem Objekt ist unter anderem obwohl später created

    Problem steht im Titel...
    In GM:S

    In 8.1 wars doch immer so dass später kreierte (in meinem fall mit istance_create) Instanzen über einer andern Instanz mit gleicher Depth gezeichnet wurden.... :headtouch:

    Und gibt es eine Möglichkeit dass doch wieder irgendwie so zu machen? Ohne jedesfmall den tatsächlichen Depth Wert verändern zu müssen

    lg. Pac
    Sorm ist Schuld

    Edit: Doch ist er
  • Das wurde in Studio eben geändert:

    It should be noted here that instances of the same depth that over-lap each other in the room editor (or in game) have no guaranteed priority over which one will be "on top" of the other and. If you want to guarantee that an object lies on top of the others then you must give it a negative (or low) depth. Conversely If you want to make sure it lies below other instances then you have to give it a positive (high) depth. Depth can also be changed in-game as it has its own variable that can be changed and manipulated by actions or in code.


    Also gibt es laut Hilfe keine Möglichkeit.
  • Das Problem kenne ich, eventuell muss ich mich später auch damit befassen.
    Das einzige was mir einfällt wäre alle id's von den Instanzen in ein Array o.ä. zu speichern,
    und dann verkehrt herum auszulesen, sodass die erste Instanz die id der letzten Instanz bekommt, die zweite die der vorletzten, usw.
    Weiß nicht ob dir das jetzt geholfen hat, aber vielleicht war es ein kleiner Gedankenanstoß ...
  • Nope. Liegt daran, dass die internen Datenstrukturen nicht mehr so primitiv sind wie früher. Da wird zwecks Optimierung vermutlich sortiert und gruppiert. Eine Lösung für dich ohne den Depth-Wert zu ändern habe ich trotzdem. Sie ist absurd und ich empfehle sie nicht unbedigt, aber sie fällt in die "Because I can"-Kategorie. Besser, du involvierst ein Controller-Object, dann brauchst du vieles von dem Hickhack nicht.

    Im Create-Event überprüfst du, ob du das einzige Objekt deines Typs bist. Wenn ja, erstelle eine Liste, in die du dich an erste Stelle einträgst.
    Bist du nicht das erste, durchsuche solange alle Instanzes des gleichen Objekts, bis du eine findest, die über die Id der Liste verfügt. Übernehme diese Listen-Id und trage dich selbst ans Ende ein.
    Im Destroy-Event überprüfst du, ob es die letzte Instanz in der Liste ist. Wenn ja, zerstöre die Liste. In jedem Fall trägst du dich selbst aus der Liste aus.
    Im Draw-Event tust du gar nichts, wenn du nicht erster in der Liste bist. Ansonsten gehst du die gesamte Liste durch und führst für alle den üblichen Draw-Befehl aus.

    Oder: Du führst einfach Nachkommastellen für deine Depth-Werte ein.