【发布时间】:2018-07-25 18:24:55
【问题描述】:
为什么会发生这种情况,我怎样才能让它停止?
正如标题所说,有时在玩游戏时按键盘上的 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 后似乎需要更长的时间,但确实会发生。
如果玩家已进入最小衰减范围,则在按下 A 或 D 之前按下 W 或 S 之前不会发生这种情况。似乎没有其他键具有这种效果。
如果播放器在更改音源时处于最小范围内,则在再次按下 W/S 之前不会出现问题。
有时它会改变音量,然后卡在那个音量水平,有时即使满足所有这些“条件”,问题也会神奇地消失!
由于滑块是唯一直接“连接”到混音器的 UI 元素,并且一旦混音器未链接到滑块或完全禁用,问题就会停止,我认为罪魁祸首是混音器本身.这让我想到了一个问题:为什么混音器会从从未指定过的键盘输入输入??
我真的希望这只是我错过的一些复选框。
我很高兴应要求发布更多代码以进行进一步说明;我不想让这篇文章陷入文字墙。
【问题讨论】: