Unity手柄UI设计

手柄这个其实国内用到的项目并不多,之前没有搜到有啥好的文章。恰好上个项目手柄接入是我处理的,今天就简单讲一讲。我也是个菜鸡,如果您觉得我说的有不对或者值得商榷的地方,欢迎您留言和本Vege探讨一下。

本文默认您稍微了解或者知道UGUI底层。

我是将手柄区分成两大定义:功能/UI。何为功能?其实就是一个两层映射。即原生输入到我们定义的手柄键比如:各原生轴输入--------------LeftTrigger/RightTrigger etc。我将它称为第一层映射。为什么需要这么处理?因为不同的手柄样式大同小异,通过这一层定义可以很好地拓展不同的手柄链接到我们定义的手柄键(LeftTrigger/RightTrigger etc)。第二层就是简单的功能映射。开始我根据Xbox简单实现了一套自己的手柄逻辑,可后来考虑到没时间去一个手柄一个手柄测试轴,所以决定替换成插件

 

现在Unity市面上比较流行的是Rewired和Incontrol。之前网络上很多人都说Rewired好,Incontrol不支持热拔插啥的。但是我用的就是Incontrol,为什么?我比较过两歀插件,Rewired看上去是封装了自己的RewiredInputModule,同时底层是封在了它的库里。相较而言,Incontrol就很舒服,没有太多封装,没有底层新的InputModule,而且最新版本的Incontrol处理了网络上用户的诟病。它支持自定义拓展功能,因为你有源码。当然最主要的是,它的实现逻辑和我自己写的逻辑非常相似,那我肯定选择理解成本最小的去实现了~(这里有点汗颜,如果用Rewired的大触有不满,只能说我可能看法和您不同。毕竟工具都只是实现目标的方法,使用还是看个人)

接下来聊聊手柄UI部分,我们项目期望是能做:1.手柄左侧摇杆模拟鼠标移动,右侧功能下实现点击,这个调下User32库就好了。(我们游戏不考虑IOS平台,因为PC游戏)2.手柄左侧四方向键模拟高亮移动。这个就比较困难了。最终目标是达到Apex的界面UI操作。如果不了解,可以去自行了解Apexpc版手柄的操作 方式。

网络上我没有找到相关资料,所以只能翻源码。最后找到界面的Navigation系统。这个分为了Explicit,None,Auto。我们主要说下这三种。Explicit就是让你手动配按钮导航,None就是没有按钮导航,Auto我没有找到源码,但是通过实验,它更像是在当前编辑器界面自动生成连线,也就是说不可控。如果界面手动配其实工作量不大,但是滚动框怎么办?

成熟项目滚动框都是保证效率的前提下进行动态回收生成的,所以我的做法滚动框和界面进行互斥,界面使用Navigation Explicit,滚动框自己写算法,我们项目用的是LoopScrollRect,我在里面自己写了一套导航逻辑。

哦对了,不同的手柄的左侧四方向键对应的轴不同,可我们要改什么轴?答案,各Inputmodule的Horizontal和Vertical轴,所以需要你手动去配置轴。运行方面呢?没问题,功能都是齐全,问题Solved。

为什么没上干货?首先今天聊的比较杂,其次我只是提供思路,具体的实现还是最好由大家去自行斟酌。写这篇博客的想法更多是,给后续有需要的人一点别的思路的提示。最起码,这篇博客会记录我做过的事。

当然不排除那天突然我丢点相关东西上来,Peace。

版权所有:

Yummy不是女孩

注:下一篇将是关于场景管理,我在自学场景管理,所以我也挺期待我能不能写出一个像样的博客。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值