我现在有点坚持我的剧本了。当一个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(带标签)。
我该如何解决?
答案 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>
继承自MonoBehaviour
,Behaviour
继承自Behaviour
。
Component