【问题标题】:Audio clip not playing after collision碰撞后音频剪辑不播放
【发布时间】:2019-10-11 12:06:55
【问题描述】:

我遇到音频问题已经 3 天了。碰撞后我想播放音频。 没有得到任何正确的想法或问题出现在我的场景中,我无法解决我的问题。 在我的 GameObject 中,我通过“添加组件”添加了音频源,我将 mp3 文件放入 AudioClip,并且 勾选'Play On Awake'。

注意:PlayExplosionAnimation() 和 Destroy() 工作正常。

public class Player : MonoBehaviour
{

    private AudioSource source;

    void Start()
    {
        source = GetComponent<AudioSource>();
    }

    void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "Rocks")
        {
            source.Play();
            PlayExplosionAnimation();
            Destroy(gameObject);
        }
    }

}

【问题讨论】:

  • 你会立即破坏你的对象,因此你的 audioSource。
  • 通过指定时间延迟销毁,例如Destroy(gameObject, 0.5)
  • 非常感谢@Johnny 和 Jichael。经过一些延迟后,它正在播放
  • @M.S.T 为了完整起见,我将添加一个答案。

标签: c# unity3d audio-source


【解决方案1】:

问题是AudioSource 附加到游戏对象上,该对象在检测到碰撞后立即被破坏,因此您实际上听不到声音。一种可能的解决方案是通过指定要延迟销毁的秒数来延迟销毁游戏对象,例如延迟 0.5 秒。

void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.tag == "Rocks")
    {
        source.Play();
        PlayExplosionAnimation();
        Destroy(gameObject, 0.5);
    }
}

【讨论】:

    【解决方案2】:

    试试这个,如果还是不行,说明你的音频有问题:)

    public class Player : MonoBehaviour
    {
    private AudioSource source;
    
    void Start()
    {
        source = GetComponent<AudioSource>();
    }
    
    void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "Rocks")
        {
            source.Play();
            PlayExplosionAnimation();
            gameObject.SetActive("false");
            Destroy(gameObject, 1f);
        }
    }
    

    }

    【讨论】:

      猜你喜欢
      • 2018-05-11
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多