为什么会发生这种情况,如何使它停止?
就像标题中所说的那样,有时当我只想A / D左右移动玩家角色而对音量没有影响时,有时在玩游戏时按键盘上的A / D可以调节音量。
背景信息: 我按照本教程设置了音频音量滑块UI元素: https://www.youtube.com/watch?v=YOaYQrN1oYQ&t=122s
这是我的音量滑块的代码:
public class MasterAudioSlider : MonoBehaviour
{
public AudioMixer audioMixer;
public void SetVolume(float volume) => audioMixer.SetFloat("volume", volume);
}
我设置了四个UI按钮,以便单击每个按钮时,它会在切换音频源组的开/关之间循环,然后循环回到第一组音频源。如果需要进一步说明,我可以发布代码。
这是我到目前为止所知道的(请原谅,它应该是单级项目符号列表):
-按A减小音量,按D增大音量。
左右箭头键以及映射到左右字符移动的任何其他键也具有相同的效果。
如果在W或S调低的状态下按A或D,则音量不会改变。这仅在W / S已经下降的情况下发生。
-只要禁用/断开滑块元素或混音器本身,问题就会停止。
在我的代码中,将其从source.Pause()更改为source.Stop()并没有任何改变。
仅暂停游戏(并因此启用我的暂停菜单)不会触发此问题。在暂停菜单中单击也不会触发此问题。仅当单击UI元素时才会发生这种情况(可能是因为某些值或状态已更改)。
让问题本身发生是有点挑剔。我会尽力解释。
游戏开始时,我已经将一些音频源设置为唤醒时播放,直到单击一个按钮开始播放其他音频源后,问题才发生。一旦它循环回到播放第一个音频源,问题仍然存在。
即使我没有单击按钮来播放新的音频源,使用滑块更改音频的音量似乎也触发了问题。
问题似乎在播放器移至音频源衰减的最小范围内并开始存在,即使他们移出音频源衰减的最大范围也仍然存在。编辑:情况并非如此,因为有可能在站在最大范围内而从未步入最小范围时触发问题。按下W / S后,似乎需要更长的时间,但是确实发生了。
如果播放器已进入最小衰减范围,则直到按W或S或按A或D之前都不会发生。没有其他键似乎有此效果。
如果在更改音频源时播放器处于最小范围内,则只有再次按下W / S才会出现问题。
有时它会改变音量,然后卡在该音量级别,有时即使所有这些“条件”都得到满足,问题也会神奇地消失!
由于滑块是唯一直接“连接”到音频混合器的UI元素,并且一旦音频混合器未链接到滑块或被完全禁用,问题就停止了,我认为罪魁祸首是音频混合器本身。这就引出了一个问题:为什么混音器会从没有指定键盘的地方接受键盘的输入?
我真的希望这只是我错过的某些复选框。
我很乐意应要求发布更多代码,以作进一步说明;我不想把这篇文章用文字围住。