【问题标题】:How to fix "Can't Play a Disabled Audio Source"?如何修复“无法播放禁用的音频源”?
【发布时间】:2021-07-20 17:05:59
【问题描述】:

我正在尝试在我的游戏中添加一种声音,当玩家移动到某个空间时,它会播放嘎吱嘎吱的声音。我已经为声音创建了 AudioSource 文件和 .OGG 文件。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SpaceBlue : MonoBehaviour 
{
    public Transform spaceNext;
    public AudioSource stepOnObject;
    public AudioClip stepOnSound;

    private void Start()
    {
        stepOnObject.clip = stepOnSound;
        stepOnObject.enabled = true;
    }

    private void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Player")
        {
            stepOnObject.Play();
            if (BoardScript.diceValue > 0)
            {
                BoardScript.diceValue -= 1;
                Debug.Log("The dice are now " +BoardScript.diceValue);
                other.transform.LookAt(spaceNext);
            }

        }
    }
}

我已将源代码和剪辑添加到我的游戏对象中,并且在选择和不选择“唤醒时播放”的情况下都进行了尝试。

每当游戏走过玩家走过对象时,我都会在统一引擎中收到警告,指出源已禁用。

任何帮助表示赞赏:)

【问题讨论】:

  • 是否启用了音频源组件?它所附加的游戏对象呢?
  • 是的,它们都已启用
  • 确保您没有意外添加多个音频源。如果您没有,那么我会说您应该从对象中删除音频源组件并重新添加一个新组件以查看是否有效。如果问题仍然存在,那么我会向 Unity 提交错误报告,因为如果一切都启用,它应该可以工作。
  • 显示截图?
  • Brandon 我现在在工作,但我回来后会尝试您的建议。如果这不起作用,我会发布一些屏幕截图 Draco

标签: c# unity3d unity5


【解决方案1】:

我遇到了类似的问题,我通过在调用 Destroy(GameObject) 后更改 Play() 调用的位置来解决它。我建议尝试将对 Play() 的调用移至函数末尾,或尝试 Invoke("stepOnObject.Play", 0.5f);以确保它被调用。

否则,请确保其复选框已选中,并且 AudioSource 实际上已附加了一个 AudioClip。

【讨论】:

    【解决方案2】:

    如果您在其他脚本中有任何代码段会破坏该游戏对象或使 SetActive 为 false,那么解决此问题的最佳方法是使用协程将该段代码延迟一段时间。

    【讨论】:

    • 这解决了我的问题,谢谢!
    猜你喜欢
    • 2017-01-06
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多