好吧我很抱歉要问,但是我试图这样做,以便当我按下z时,门户出现在我的Spr_players坐标上,但是如果其中一个已经存在,我希望它被删除,我只是想知道我做错了什么。再次抱歉打扰。 (请注意我是一个糟糕的程序员,如果我违反任何规则,我会适用)
if object_exists(portal)
{
instance_destroy()
action_create_object(portal,Spr_player.x,Spr_player.y)
}
else
{
action_create_object(portal,Spr_player.x,Spr_player.y)
}
答案 0 :(得分:1)
instance_destroy()
语句会破坏正在执行代码的当前self
实例。您必须使用with (<objectID>) {instance_destroy()}
语法来销毁另一个实例。
只要房间中只有portal
的一个实例,此代码就可以运行:
if object_exists(portal)
{
with (portal) instance_destroy(); //you should also need a semicolon here to separate
//this statement from the next, it is good practice
//to do this after all statements as I have done.
action_create_object(portal,Spr_player.x,Spr_player.y);
}
else
{
action_create_object(portal,Spr_player.x,Spr_player.y);
}
如果有portal
的多个实例,这只会破坏第一个实例。为了摧毁所有你需要使用for
循环来迭代它们。在我的脑海中,我不记得获取对象的所有实例的id
的函数,但看起来这不是问题,因为每次创建一个对象都会被销毁,因此,你只有一次。
另一种方法是将现有门户网站移至新位置。这里唯一的区别是门户网站的创建事件将不会被执行,任何警报都不会被重置。
portal.x=Spr_player.x
portal.y=Spr_player.y
如果有多个门户网站,这只会移动第一个门户网站。