Probleme mit instance_create

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

  • Probleme mit instance_create

    Wenn ich per D&D ein Objekt erstelle, klappt alles super. In der Regel mache ich das aber mit GML-code:

    GML-Quellcode

    1. bum[i]=instance_create(x,y,sub_objekt)

    Normalerweise habe ich dann wenigstens eine Variable, die übergeben werden soll:

    GML-Quellcode

    1. bum[i].index = i

    Dabei gibt es auf jeden Fall zwei Störfaktoren.
    1. Das Create-Event vom sub_objekt wird nicht ausgeführt
    2. selbst wenn ich es mit

    GML-Quellcode

    1. with bum[i] event_perform(ev_create,0)

    manuell herbeiführe, wird natürlich die Variable (hier: index) erst im nächsten Step übernommen, ist also im Create-Event noch nicht "verfügbar".
    Nachdem ich mich viele Stunden mit unerklärlichen Resultaten herumgeärgert habe, um diese Sachen erstmal rauszufinden, bin ich dazu übergegangen, es so zu machen:

    GML-Quellcode

    1. bum[i]=instance_create(x,y,sub_objekt)
    2. bum[i].index = i
    3. bum[i].alarm[0]=1

    und den Create-Code für das Sub-Objekt eben in alarm[0] geschreiben. Aber das gefällt mir eigentlich auch nicht. Gibt es ein Step-Event, darf das evtl. dann auch im ersten Step noch nicht aufgerufen werden. Letztendlich funktioniert es so zwar, aber ich hab das Gefühl irgendwas falsch zu machen !
  • Ich würde dir raten, das ganze genau so zu schreiben wie du es in D&D gemacht hast. Und da gibts auch ne feine sache, die nicht so bekannt ist, denn jedes Funktion per D&D gibt es auch direct als Funktion per (GML) was 100& genauso identisch mit der D&D FUnktion. Sie wurden auch nich weiter in der Hilfe erklärt und werden auch nicht angezeigt, wie sie genau heißen (also da unten das graue kästchen im editor wo du die GML anweisungen siehst die es mit den buchstaben gibt.

    da ich nich genau weise welche Funktionen du in D&D genutzt hast geb ich dir hier mal alle.
    DIe kannste auch unter : Scripts-->Show build Funktion --> nachschlagen :). DIe Parameter entsprechen der Reihenfolge wie bei D&D. (von oben nach unten)

    Quellcode

    1. action_another_room
    2. action_bounce
    3. action_cd_pause
    4. action_cd_play
    5. action_cd_playing
    6. action_cd_present
    7. action_cd_resume
    8. action_cd_stop
    9. action_change_object
    10. action_color
    11. action_create_object
    12. action_create_object_motion
    13. action_create_object_random
    14. action_current_room
    15. action_draw_arrow
    16. action_draw_background
    17. action_draw_ellipse
    18. action_draw_ellipse_gradient
    19. action_draw_gradient_hor
    20. action_draw_gradient_vert
    21. action_draw_health
    22. action_draw_life
    23. action_draw_life_images
    24. action_draw_line
    25. action_draw_rectangle
    26. action_draw_score
    27. action_draw_sprite
    28. action_draw_text
    29. action_draw_text_transformed
    30. action_draw_variable
    31. action_effect
    32. action_end_game
    33. action_end_sound
    34. action_execute_script
    35. action_font
    36. action_fullscreen
    37. action_highscore_clear
    38. action_highscore_show
    39. action_if
    40. action_if_aligned
    41. action_if_collision
    42. action_if_dice
    43. action_if_empty
    44. action_if_health
    45. action_if_life
    46. action_if_mouse
    47. action_if_next_room
    48. action_if_number
    49. action_if_object
    50. action_if_previous_room
    51. action_if_question
    52. action_if_score
    53. action_if_sound
    54. action_if_variable
    55. action_inherited
    56. action_kill_object
    57. action_kill_position
    58. action_linear_step
    59. action_load_game
    60. action_message
    61. action_move
    62. action_move_contact
    63. action_move_point
    64. action_move_random
    65. action_move_start
    66. action_move_to
    67. action_next_room
    68. action_partemit_burst
    69. action_partemit_create
    70. action_partemit_destroy
    71. action_partemit_stream
    72. action_partsyst_clear
    73. action_partsyst_create
    74. action_partsyst_destroy
    75. action_parttype_color
    76. action_parttype_create
    77. action_parttype_gravity
    78. action_parttype_life
    79. action_parttype_secondary
    80. action_parttype_speed
    81. action_path
    82. action_path_end
    83. action_path_position
    84. action_path_speed
    85. action_potential_step
    86. action_previous_room
    87. action_replace_background
    88. action_replace_sound
    89. action_replace_sprite
    90. action_restart_game
    91. action_reverse_xdir
    92. action_reverse_ydir
    93. action_save_game
    94. action_set_alarm
    95. action_set_caption
    96. action_set_cursor
    97. action_set_friction
    98. action_set_gravity
    99. action_set_health
    100. action_set_hspeed
    101. action_set_life
    102. action_set_motion
    103. action_set_score
    104. action_set_timeline
    105. action_set_timeline_position
    106. action_set_vspeed
    107. action_show_info
    108. action_show_video
    109. action_sleep
    110. action_snap
    111. action_snapshot
    112. action_sound
    113. action_sprite_color
    114. action_sprite_set
    115. action_sprite_transform
    116. action_webpage
    117. action_wrap
    Alles anzeigen


    Und wegen deinen code den ich oben sehe, warum benutzt du einen Array also ?
    Brauchst du doch eigentlich nich.
  • Ich hatte einst genau das selbe Problem. Soweit ich das beurteilen kann liegt es an folgendem: Das Create Event wird genau in dem Moment ausgeführt, wenn du das Objekt erstellst. Wenn du also im Create Event auf eine Variable namens index zugreifst, ist diese einfach noch nicht vorhanden. Ich hab das ganze immer so gelöst, indem ich Funktionen geschrieben habe, welche einem Objekt alle Variablen zuweisen, welche von außen kommen:

    GML-Quellcode

    1. {
    2. //argument 0 ... index
    3. //argument 1 ... hugo
    4. //argument 2 ... dx
    5. //argument 3 ... dy
    6. var TmpObj;
    7. TmpObj = instance_create(x,y,OBJ_Whatever);
    8. TmpObj.index = argument0;
    9. TmpObj.hugo = argument1;
    10. TmpObj.dX = argument2;
    11. TmpObj.dY = argument3;
    Alles anzeigen


    Im endeffekt hab ich fast den gesammten Code des Create Event in diese Funktionen gepackt. Im Create Event selbst ist dann nurmehr code, welcher vom rest des Spiels unabhängig ist, z.b. Timer Variablen, oder Temporäre Variablen, welche sich durchs Objekt durchziehen.
    ...
  • Benutzer online 4

    4 Besucher