Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
436 views
in Technique[技术] by (71.8m points)

gml - How to get access to the instance variable within the Create event?

I have this code in GML2 Create event

inst1 = instance_create_layer(100, 100, "Instances", obj_genus)
inst2 = instance_create_layer(200, 100, "Instances", obj_genus)
with inst1 {
    txt = "Ying"
    related = inst2
}
with inst2 {
    txt = "Yang"
    related = inst1
}

But I can't use inst1 or inst2 at this time. I get the follower error:

ERROR in
action number 1
of Create Event
for object obj_game:

Variable obj_genus.inst2(100006, -2147483648) not set before
reading it.
at gml_Object_obj_game_Create_0(line 5)-     related = inst2
##################
gml_Object_obj_game_Create_0 (line 5)

I create pairs of objects which are related to each other. Is it possible to wait in the Create event, until the object has been created? Unfortunately there is no Post Create event or something like that.

question from:https://stackoverflow.com/questions/65866297/how-to-get-access-to-the-instance-variable-within-the-create-event

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Your problem is not related to instance creation, but rather to the with statement - see, with changes what the current instance will be in the block, therefore as of related = inst2 line you are not pulling the inst2 variable from obj_game, but rather from obj_genus that you apply the statement on.

Using local variables (which you have found yourself) is by far the easiest way around this, as local variables are function/event-wide and thus remain perfectly accessible inside a with-block.

If you do need those two instances stored in obj_game for later use, you could use other.:

inst1 = instance_create_layer(100, 100, "Instances", obj_genus)
inst2 = instance_create_layer(200, 100, "Instances", obj_genus) // stores inst2 in obj_game
with inst1 {
    txt = "Ying"
    related = other.inst2 // uses inst2 from obj_game
}
with inst2 {
    txt = "Yang"
    related = other.inst1
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...