【问题标题】:unity yield waitforsecond not workingunity yield waitforsecond 不工作
【发布时间】:2014-12-11 18:10:57
【问题描述】:

我是 Unity 开发人员的新手,我从阅读教程、演示、示例和视频开始学习 Unity。而且我在使用计时器时遇到了一些麻烦(就像统一的线程,我猜是......),这是我的代码:

void OnCollisionEnter(Collision colli){

    if (colli.collider.name == "Car") {
        Debug.Log("On Collision naz ~.~");
        Destroy(Car);    
        Destroy(this.gameObject);
        GameObject clone = (GameObject) Instantiate(Bum, transform.position, Quaternion.identity);
        StartCoroutine(deleteObject(clone));
    // Just want to delete "clone" object after 1 second
    }
}

IEnumerator deleteObject(GameObject bum){
    Debug.Log("chuan bi destroy naz ~.~"); // <-- run normally
    yield return new  WaitForSeconds(1.0F);
    Debug.Log("Destroy rui naz =,='");    //  <-- not display
    Destroy (bum);
}

我不知道为什么....

【问题讨论】:

  • 流浪汉被摧毁了吗?我之所以问,是因为我对实践中的 yield 语句感到困惑。如果交换 Debug.log() 和 destroy 语句,是否显示文本?
  • 是的。 destroy 语句后的 debug.log() 没有运行,我认为 yield 也没有运行:(
  • yield WaitForSeconds(1) 导致问题,需要 yeild retun new waitforsecond();
  • 为什么使用yield语句?不只是为了互动吗?还是团结一致?
  • gamedev.stackexchange.com(也许这里的人更了解统一)

标签: unity3d yield


【解决方案1】:

是的,我找到了解决方案。因为我要在启动协程之前销毁(this.gameObject)。被破坏的对象不能继续运行协程。 在 Destroy(Bum) 解决问题后更改 Destroy(this.gameObject) :3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 2016-10-14
    • 1970-01-01
    • 2015-06-14
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多