Unity中的audio.Play()和Destroy(gameObject)计时问题

时间:2015-06-11 20:21:59

标签: unity3d playback destroy

我为我的明星做过脚本,给出1分,制作粒子,发出声音并摧毁物体。一切正常,但现在脚本等待,直到声音停止播放。在播放声音之前,你建议用什么方法来摧毁物体? 我可以制作新的gameobject音频源预制件,将它附加到星星组并像使用粒子系统那样调用它的播放,或者有更好的方法吗?

using UnityEngine;
using System.Collections;


public class Star : MonoBehaviour {

    public ParticleSystem StarParticle;

    public AudioClip otherClip;

    IEnumerator OnTriggerEnter (Collider player)
    { 
        ScoreManager.score += 1;


        StarParticle.Play ();

        AudioSource audio = GetComponent<AudioSource>();
        audio.Play();
        yield return new WaitForSeconds(audio.clip.length);

        Destroy (gameObject);

    }
}

这就是代码。

2 个答案:

答案 0 :(得分:2)

通过阅读评论,这是怎么回事:

audio.clip.length的值转换为变量并减少它,例如除以2或4等,这样脚本将通过音频文件播放继续50%或25%。

 IEnumerator OnTriggerEnter (Collider player)
{ 
    ScoreManager.score += 1;


    StarParticle.Play ();

    AudioSource audio = GetComponent<AudioSource>();

    waitValue = (audio.clip.length/2);
    audio.Play();
    yield return new WaitForSeconds(waitValue);

    Destroy (gameObject);

    }

答案 1 :(得分:1)

解决我的问题。 我禁用了对撞机(不允许其他ppl从该星上获取点)和网格(使星形不可见),然后在播放后我摧毁了我的星形游戏对象。谢谢回复!

使用UnityEngine; 使用System.Collections;

公共课明星:MonoBehaviour {

public ParticleSystem StarParticle;

IEnumerator OnTriggerEnter (Collider player)
{ 
    ScoreManager.score += 1;


    StarParticle.Play ();

    AudioSource audio = GetComponent<AudioSource>();
    audio.Play();
    GetComponent<Collider>().enabled = false;
    GetComponent<MeshRenderer>().enabled = false;
    yield return new WaitForSeconds(audio.clip.length);

    Destroy (gameObject);

}

}