Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 预制游戏对象不是';不要被摧毁_Unity3d - Fatal编程技术网

Unity3d 预制游戏对象不是';不要被摧毁

Unity3d 预制游戏对象不是';不要被摧毁,unity3d,Unity3d,我尝试了两种方法来销毁我的预制游戏对象,但两种方法都不起作用。我希望在调用Spawn方法时实例化该对象,然后在timeOfTravel变量的float值传递后销毁。首先,我尝试使用下面的代码实例化对象的相同方法: void Spawn () { Vector2 spawn = new Vector2 (gameObject.transform.position.x, gameObject.transform.position.y); GameObject ballInstanc

我尝试了两种方法来销毁我的预制游戏对象,但两种方法都不起作用。我希望在调用Spawn方法时实例化该对象,然后在timeOfTravel变量的float值传递后销毁。首先,我尝试使用下面的代码实例化对象的相同方法:

void Spawn () {

    Vector2 spawn = new Vector2 (gameObject.transform.position.x, gameObject.transform.position.y);
    GameObject ballInstance = Instantiate (ball, spawn, Quaternion.identity, parent);
    Destroy (ballInstance.gameObject, ballInstance.GetComponent<Ball>().timeOfTravel);

}

被实例化的预置是UI画布上的图像对象,如果这有区别的话,但是我不明白为什么它们没有被销毁。我想我可能没有正确引用对象实例?

您是否尝试使用“销毁(this.gameobject);”立即销毁游戏对象?也许你的“timeoftravel”功能有问题。

我也试过这个。gameObject也没用。timeOfTravel只是一个浮点数,而不是一个函数。它利用了2参数Destroy构造函数,该构造函数将延迟时间作为浮点数,逻辑看起来很好。我不知道的一件事是,在实例化时将游戏对象分配给父对象是否会改变某些逻辑。我会尝试从这里删除“父项”GameObject ballInstance=实例化(ball,spawn,Quaternion.identity,parent);,然后试试看是否有效。如果没有,我不知道为什么这不起作用…它需要成为画布的父对象,以便图像对象出现我们的第一个案例可能是一个问题,但您的第二个案例在我看来很好。如果您使用的是VisualStudio,您可以在第二个示例中设置一个断点,然后连接到Unity以查看这些值的情况。但是,在第一个示例中,当您实例化一个对象时,它并没有立即完全设置好。很多初始化都发生在下一帧更新之前。因此,您可能试图破坏一个尚未完全成形的对象。它可能是对自身的.gameObject引用。组件(球)也可能尚未设置。您的代码在逻辑上看起来是正确的。可能会将您的游戏对象设为空对象的子对象,然后销毁该对象。此对象有任何更新吗?我遇到了同样的问题。
void Start () {

    Destroy (gameObject, timeOfTravel);

}