Unity"无法播放已禁用的音频源"

时间:2016-08-30 08:17:40

标签: c# audio unity3d

每当调用该函数时,我一直在尝试播放效果声音,但是我一直收到通知"无法播放禁用的音频源"。我也注意到声音在清醒时播放,即使它关闭了。这是我的EffectController类的样子

//--------------------------------------------------------------------------------------------------------------------
//  <copyright file="EffectController.cs" company="ShinjiGames">
//     Copyright (c) ShinjiGames LLC 2016.  All rights reserved.
//  </copyright>
//--------------------------------------------------------------------------------------------------------------------

namespace Assets.Scripts.Effects
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    using GameSettings;
    using UnityEngine;

    /// <summary>
    /// Responsible for audio cues and other add-on effects
    /// </summary>
    public class EffectController : MonoBehaviour
    {
        /// <summary>
        /// The sound that plays whenever the player hits a pickup
        /// </summary>
        public AudioSource PickupChime;

        /// <summary>
        /// The current instance of the effect controller
        /// </summary>
        private static EffectController instance;

        /// <summary>
        /// Get the instance of the effect controller
        /// </summary>
        /// <returns>The instance of the effect controller</returns>
        public static EffectController GetInstance()
        {
            return EffectController.instance;
        }

        /// <summary>
        /// When the player hits a pickup on the given position, plays the chime and add an effect
        /// </summary>
        /// <param name="position">The position of the collision</param>
        public void PickupEffect(Vector3 position)
        {
            this.PickupChime.enabled = true;
            this.PickupChime.PlayOneShot(this.PickupChime.clip);
        }

        /// <summary>
        /// When the players hits a bomb, display the bomb explosion 
        /// </summary>
        /// <param name="position">The origin of the explosion</param>
        public void BombEffect(Vector3 position)
        {
            var explosion = GameObject.Instantiate(PrefabManager.GetIntance().BombExplosionPrefab);
            explosion.GetComponent<BombExplosion>().SetOrigin(position);
        }

        /// <summary>
        /// Initialization for the class
        /// </summary>
        private void Start()
        {
            this.PickupChime.enabled = true;
            this.GetComponent<AudioSource>().enabled = true;

            if (EffectController.instance != null)
            {
                GameObject.Destroy(EffectController.instance.gameObject);
            }

            EffectController.instance = this;
            GameObject.DontDestroyOnLoad(this.gameObject);
        }
    }
}

任何人都可以帮我一把吗?我慢慢疯了

编辑1:我更新了这个类,以便它不是接收一个AudioSource,而是拥有它自己的AudioSource组件,而是将剪辑带入chime,这解决了问题

1 个答案:

答案 0 :(得分:1)

您可能在检查器中未选中音频源。