我花了一段时间才找到它,我什至不得不重新创建场景,而我碰巧忘记了EventSystem,但是...我正在开发一个简单的2D应用程序。按下一个按钮,它将播放随机声音。这很简单。有一个Button UI元素,OnClick调用我的脚本(在对象上),然后该脚本播放音频。
我想添加一个Pitch滑块,以便脚本将音频剪辑分配给AudioSource,然后将UI Slider的OnValueChanged附加到脚本中。现在我意识到我需要添加EventSystem,但是现在我的按钮将无法播放音频!
我在Play()调用之前有Debug.Log语句,所以我知道按钮回调在起作用,只是没有音频。删除EventSystem之后,这些按钮可以正常播放音频,但是现在无法使用滑块了。想法?
使用2018.2-Android构建
编辑
private AudioSource audioSource;
....
IEnumerator PlayClip() {
// Do stuff
audioSource.clip = audioClip;
audioSource.Play();
while(audioSource.isPlaying)
yield return new WaitForSeconds(0.5f);
}
public void ButtonPushed() {
StartCoroutine(PlayClip());
}
public void ChangePitch(float pitch) {
audioSource.pitch = pitch
}
然后,滑块OnValueChanged()
仅调用ChangePitch
,范围为-3到3。以上所有代码只是一个脚本,并附加到一个Controller对象。
不用担心,协程逻辑比那更好:)
答案 0 :(得分:1)
您的问题可能与此Unity issue有关:
[AUDIOSOURCE]禁用循环时,不播放带负音调的音频
用户不应使用负音高值,除非有人希望剪辑 在循环中倒退播放。如果用户希望它播放一次 向后,首先他/她需要设置位置 AudioSource.time到剪辑的结尾,然后播放。
我自己进行了测试,并且能够在以下情况下重现您的问题:
如果音高的起始值为正,或者在启用循环的情况下为负,那么我可以使用滑块将音高在-3到3之间移动。