我正在使用Unity3d并遇到问题。我正在做的是有Canvas
并且画布上下有两个按钮。我想在按钮突出显示时发出声音,我用两个按钮附加我的脚本,脚本与鼠标一起正常工作。但是我想用键盘箭头键实现这个机制,然后我使用Button Navigation System
并将up
按钮作为第一个选定对象放到EventSystem
脚本中。现在看图像按钮高亮,键盘工作正常。但是当通过键导航到next
按钮时,声音不会播放。如何解决这个问题?
代码:
public class HighLightSound : MonoBehaviour,IPointerEnterHandler
{
[SerializeField]
private AudioSource Source;
public void OnPointerEnter(PointerEventData ped)
{
Source.Play();
}
}
答案 0 :(得分:1)
根据Unity Scripting API,您需要实现ISelectHandler并定义OnSelect()方法。
https://docs.unity3d.com/ScriptReference/UI.Selectable.OnSelect.html
在你的情况下会给出这个:
public class HighLightSound : MonoBehaviour,IPointerEnterHandler, ISelectHandler
{
[SerializeField]
private AudioSource Source;
public void OnPointerEnter(PointerEventData ped)
{
Source.Play();
}
public void OnSelect (BaseEventData eventData)
{
Source.Play();
}
}
希望有所帮助。
答案 1 :(得分:1)
我想你还需要实现ISelectHandler
:
public class HighLightSound : MonoBehaviour,IPointerEnterHandler, ISelectHandler
{
[SerializeField]
private AudioSource Source;
public void OnPointerEnter(PointerEventData ped)
{
Source.Play();
}
public void OnSelect(EventSystems.BaseEventData eventData)
{
Source.Play();
}
}