感觉Unity中InputAction的使用,步步都是坑。
需求点介绍
当用户长按0.5s 键盘X或者VR left controller primaryButton (即X键)时,显示下一个图片。
步骤总览
- 创建InputAction资产
- 将该InputAction资产绑定到某个GameObject上
- 在对应的script中,接收InputAction触发的事件,完成“显示下一个图片”的逻辑
细节
-
创建InputAction资产
-
将该InputAction资产绑定到某个GameObject上。
如果Behaviour是send messages或者broadcast messages,那这个GameObject或者其子GameObject包含Component,这个Component有需要检测InputAction输入的function。
如果Behaviour是Invoke Unity Event,那好像绑定在哪个GameObject都没有关系,只要Player Input这个component能在function之前被初始化就行。
至于Behavior如何设置,见官网, 不过官网说得也不明不白的。
在我的例子中,我需要设置成Invoke Unity Events,然后像对待UI控件一样,显性绑定才能触发function的运行。Send/Broadcast Messages都不行。
- 在对应的script中,接收InputAction触发的事件,完成“显示下一个图片”的逻辑
public void ChangeStrokeImage(InputAction.CallbackContext context)
{ if (context.action.name == "DrawNext") {
if (context.performed) // Otherwise this will be triggered three times.
{
if (textures != null && textures.Length > 0)
{
currentIndex = currentIndex % textures.Length;
strokeRawImage.texture = textures[currentIndex];
currentIndex = currentIndex + 1;
}
}
}
}