手柄这个其实国内用到的项目并不多,之前没有搜到有啥好的文章。恰好上个项目手柄接入是我处理的,今天就简单讲一讲。我也是个菜鸡,如果您觉得我说的有不对或者值得商榷的地方,欢迎您留言和本Vege探讨一下。
本文默认您稍微了解或者知道UGUI底层。
我是将手柄区分成两大定义:功能/UI。何为功能?其实就是一个两层映射。即原生输入到我们定义的手柄键比如:各原生轴输入--------------LeftTrigger/RightTrigger etc。我将它称为第一层映射。为什么需要这么处理?因为不同的手柄样式大同小异,通过这一层定义可以很好地拓展不同的手柄链接到我们定义的手柄键(LeftTrigger/RightTrigger etc)。第二层就是简单的功能映射。开始我根据Xbox简单实现了一套自己的手柄逻辑,可后来考虑到没时间去一个手柄一个手柄测试轴,所以决定替换成插件
现在Unity市面上比较流行的是Rewired和Incontrol。之前网络上很多人都说Rewired好,Incontrol不支持热拔插啥的。但是我用的就是Incontrol,为什么?我比较过两歀插件,Rewired看上去是封装了自己的RewiredInputModule,同时底层是封在了它的库里。相较而言,Incontrol就很舒服,没有太多封装,没有底层新的InputModule,而且最新版本的Incontrol处理了网络上用户的诟病。它支持自定义拓展功能,因为你有源码。当然最主要的是,它的实现逻辑和我自己写的逻辑非常相似,那我肯定选择理解成本最小的去实现了~(这里有点汗颜,如果用Rewired的大触有不满,只能说我可能看法和您不同。毕竟工具都只是实现目标的方法,使用还是看个人)
接下来聊聊手柄UI部分