在游戏中我们使用碰撞检测,当两个物体发生碰撞时产生声音音效,代码如下:

unity_实用小技巧(避免游戏对象被销毁时声音消失)-LMLPHP

如果使用上述代码,我们会发现,在脚本中使用AudioSource声明该声音,当该物体被销毁时声音也会立刻停止。

但是我们希望声音继续播放完,那么此时我们应该使用AudioClip声明,代码如下:

unity_实用小技巧(避免游戏对象被销毁时声音消失)-LMLPHP

public AudioSource music_pickup;

void OnTriggleEnter(Collider other)
    {
        Player player = other.GetComponent<Player>();
        player.hasKey = true;
        music_pickup.Play();
        Destroy(this.gameObject);
    }

05-15 23:16