我的主题曲无法正常启动和循环播放

时间:2019-06-07 15:17:00

标签: c# unity3d

我正在Unity中制作一个视频游戏,我想在游戏开始时播放简介AudioSource Intro,然后循环播放关卡的主题。

它可以工作,但是我遇到的问题是,在完成介绍时,会静默1秒,然后开始重现主题。 当主题结束并循环播放时,这种沉默也会出现,这使游戏感觉停滞了一秒钟。

public class audioTheme : MonoBehaviour
{

    public AudioSource Intro;
    private bool startedLoop;

    void Start()
    {
        Intro = GetComponent<AudioSource>();
        Intro.Play();
    }

    void FixedUpdate()
    {
        if (!Intro.isPlaying && !startedLoop)
        {
            FindObjectOfType<AudioManager>().Play("theme");
            startedLoop = true;
        }
    }
}

我还有一个“ AudioManager”脚本,其中包含一系列音频,例如跳跃音效,硬币和主要主题。这使我可以使用语句FindObjectOfType <AudioManager> (). Play (" soundName ");

使用任何声音
public class AudioManager : MonoBehaviour
{
    public Sound[] sounds;

    void Awake()
    {    
        foreach (Sound s in sounds)
        {
            s.source = gameObject.AddComponent<AudioSource>();
            s.source.clip = s.clip;
            s.source.volume = s.volume;
            s.source.loop = s.loop;
            s.source.pitch = s.pitch;
        }        
    }

    public void Play(string name)
    {
        Sound s = Array.Find(sounds, sound => sound.name == name);
        s.source.Play();
    }
}

1 个答案:

答案 0 :(得分:0)

这种行为的最常见原因是将mp3格式用于音乐而不是wav。 Mp3的前面没有声音,因此无法循环播放。使用mp3播放短声,使用wav播放循环的声音和音乐。您也可以检查following answer