You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity健康拾取物触发时音频不播放问题求助

问题:Unity健康拾取物碰撞时音效无法播放(代码已执行)

问题描述

在场景中放置健康拾取物品后,遇到以下异常:

  • 勾选Play on Awake时能正常听到音效
  • 玩家实际拾取物品时,Debug.Log确认audioSource.Play()代码已执行,但听不到音效
  • 物品正常消失,生命值也按预期增加
  • 已排除音量为0、场景静音、其他音效无法播放的问题

相关代码

public class HP1 : MonoBehaviour
{
    public AudioSource audioSource;
    public AudioClip pickupSound;

    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.GetComponent<Player>())
        {
            audioSource.Play();
            Player.HP++;
            Player.HPChangeEvent.Invoke();
            Destroy(gameObject);
        }
    }
}

问题原因

核心问题是调用audioSource.Play()后立刻销毁了挂载AudioSource的GameObject。AudioSource依赖所在的GameObject存在才能持续播放音频,物体被销毁后音频播放会直接中断,因此你听不到完整(甚至完全听不到)的音效。而Play on Awake能正常播放,是因为物体初始化时还未被销毁,音频可以正常运行。

解决方案

提供三种可行方案,按需选择:

1. 延迟销毁物体,等待音频播放完毕

通过Destroy(gameObject, 音频时长)让物体等音效播放完成后再销毁:

private void OnTriggerEnter2D(Collider2D other)
{
    if (other.gameObject.GetComponent<Player>())
    {
        audioSource.Play();
        Player.HP++;
        Player.HPChangeEvent.Invoke();
        // 传入音频剪辑的时长作为延迟时间
        Destroy(gameObject, pickupSound.length);
    }
}

2. 使用AudioSource.PlayClipAtPoint播放音效(无需依附当前物体)

该方法会自动创建临时AudioSource播放音效,不受当前物体销毁的影响,还可以移除脚本里的audioSource引用:

private void OnTriggerEnter2D(Collider2D other)
{
    if (other.gameObject.GetComponent<Player>())
    {
        // 在拾取物的位置播放音效
        AudioSource.PlayClipAtPoint(pickupSound, transform.position);
        Player.HP++;
        Player.HPChangeEvent.Invoke();
        Destroy(gameObject);
    }
}

3. 将AudioSource移到持久化物体上

把AudioSource挂载到Player对象或全局音频管理器(不会被销毁的物体)上,这样即使拾取物被销毁,音频依然能正常播放:

// 提前获取全局音频管理器的AudioSource引用
public AudioSource globalAudioSource;

private void OnTriggerEnter2D(Collider2D other)
{
    if (other.gameObject.GetComponent<Player>())
    {
        globalAudioSource.PlayOneShot(pickupSound);
        Player.HP++;
        Player.HPChangeEvent.Invoke();
        Destroy(gameObject);
    }
}

内容的提问来源于stack exchange,提问作者PumpkinCaptain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 07:31:07