如何播放一次声音或直到动画结束?

时间:2016-05-14 13:56:45

标签: c# unity3d

我将声音片段附加到我的对象步行功能,但是当我的物体停止时,声音一直在运行。我正在使用PlayOneShot功能,但声音比动画播放3或4秒。声音也与自身混合在一起。

if (JSMove.x != 0.0f) { 
   transform.GetComponent<Animation>().Play("maleWalk");           
   audio.PlayOneShot(WalkSound, 0.5f); 
}

2 个答案:

答案 0 :(得分:1)

@ Mark的答案部分修复了问题:动画运行时,声音会一遍又一遍地播放。因此,在重新播放之前,您必须检查声音是否仍在运行。

if (JSMove.x != 0.0f) {
   transform.GetComponent().Play("maleWalk");
   if (!audio.isPlaying)
     audio.PlayOneShot(WalkSound, 0.5f);
} else if (audio.isPlaying)
   audio.Stop();

答案 1 :(得分:0)

PlayOneShot是播放音频片段,它不会在“走动”之前停止播放。结束了。 如果没有你拒绝提交的代码,我可以给你一个通用的答案,你的代码应该是这样的:

if (JSMove.x != 0.0f) {
transform.GetComponent().Play("maleWalk");
audio.PlayOneShot(WalkSound,0.5f);
} else if (audio.isPlaying) { //no movement yet audio did not finish the clip
audio.Stop();
}

&#34; mixover&#34;你提到的是因为当你试图重新开始并再次播放时,剪辑仍在播放。您应该在重新开始之前停止播放,或者,根据您的游戏需要,不要再次开始播放剪辑(即让以前开始播放的音频剪辑完成播放)。