我正在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();
}
}
答案 0 :(得分:0)
这种行为的最常见原因是将mp3格式用于音乐而不是wav。 Mp3的前面没有声音,因此无法循环播放。使用mp3播放短声,使用wav播放循环的声音和音乐。您也可以检查following answer。