经过一段时间的统一后,销毁一个特定的游戏对象

时间:2016-11-19 10:46:42

标签: c# unity3d

我现在有点坚持我的剧本了。当一个gameObject附加了我的脚本时,它有一个带有特定gameObject的触发器事件,我想在一段时间后销毁特定的gameObject。

所以我来到这里:

void OnTriggerEnter ( Collider other) {

if (other.gameObject.tag == "leaf1"){
    StartCoroutine (LeafDestruction ());
    }
}

IEnumerator LeafDestruction(){

yield return new WaitForSeconds (5);
Destroy (gameObject);

}

我知道这是一个noob错误,但我想我错过了一些东西,因为当我运行这个脚本时,它会破坏附加脚本的gameObject,而不是特定的gameObject(带标签)。

我该如何解决?

3 个答案:

答案 0 :(得分:4)

更简单的解决方案是使用Destroy函数的第二个参数:

if (other.gameObject.tag == "leaf1")
      Destroy( other.gameObject, 5.0f ) ;

答案 1 :(得分:2)

基本上你需要告诉你的协程它应该销毁other.gameObject而不是运行这个脚本的gameObject。

所以你可以做的就是在你的协同程序中添加一个参数,传入gameObject它应该真正被销毁:

void OnTriggerEnter ( Collider other) {

    if (other.gameObject.tag == "leaf1")
    {
        IEnumerator coroutine = LeafDestruction(other.gameObject);
        StartCoroutine (coroutine);
    }
}

IEnumerator LeafDestruction(GameObject toDestroy){
    yield return new WaitForSeconds (5);
    Destroy (toDestroy);
}

答案 2 :(得分:2)

你破坏了对象而不是叶子。 gameObject是this.gameObject的别名,它是此脚本组件附加到的游戏对象。注意<div class="row" id="buttonrow"> <div class="col-md-5 col-md-offset-1 button" id="bluebutton"> <div class="blueCheckDiv"></div> <div class="col-md-10 col-md-offset-1 text-center" id="text-container"> <p>This is the blue box</p> </div> </div> <div class="col-md-5 button" id="redbutton"> <div class="redCheckDiv"></div> <div class="col-md-10 col-md-offset-1 text-center" id="text-container"> <p>this is the red box</p> </div> </div> </div> 继承自MonoBehaviourBehaviour继承自Behaviour

Component