最近《热血少女》发售,是我比较喜欢的横板动作游戏,动作很多,所以我不禁对它的输入模块是怎么实现的起了很大兴趣,恰好也是用Unity引擎做的,用反编译软件看了下动作系统和输入系统的实现,发现居然有直接检测DoubleClick和长按短按的函数,F12跳转过去是一个Rewired的命名空间下的类,看不到具体的代码,才反应过来是用了插件。
调研了几个小时,发现能够简单地实现之前需要的长按,短按,同时按下(在一定时间内),双击的功能了,早知道就早点用这个插件好了,然后花了差不多一天时间把之前用到InControl的地方全部换成了Rewired的输入实现。
之前一直用的InControl,直接在UnityAssetStore上按分类“输入管理”找到了最热门的相关插件找到的,所以就一直用着了,以为是比较好用的。
不得不说这个插件真是Nice!不仅提供了各种平台(PC,各大主机,触屏)的自定义按键输入配置,还配有让玩家改按键的Demo(虽然还没看),按键配置是ScriptObject生成的,逻辑是为每位玩家分配控制器,默认有一个System玩家,这个System玩家我就用来作为还没有添加玩家时对菜单项的控制,直接通过ReInput.players.GetPlayer(playerId)就能得到对应玩家的控制器,GetSystemPlayer可以直接得到System控制器,而之前用InControl就麻烦多了,还得自己维护控制器的生成和销毁,对于同一个玩家突然间把键鼠输入换成手柄的情况的处理也很麻烦。
支持 Switch Joy-con 么?
@SwitchOn:我手边只有PS4手柄,所以也只测试了PS4手柄。
刚才看了下手柄配置列表里有Nintendo Switch Joy-Con(L) Nintendo Switch Joy-Con(R) Nintendo Switch Pro Controller,理论上应该可以支持,但是没法Switch手柄没法连接电脑呀,刚找同事借了手柄但是不知道该咋测试。
@何晓雨:是这样的,因为任天堂与开发者签署有保密协议,所以不能公开讨论细节,插件开发者们也不会将 Switch 支持部分公开给游戏开发者。但是可以通过任天堂认证获得 Joy-Con 部分的支持代码,InControl 就是这样的,正规的发行包中并无支持代码,但是可以从插件开发者那里获得,所以就可以在测试机上支持而无需增加额外代码。不过看您的描述,Rewired 应该也是支持的。
另外,Switch Joy-Con 是可以连接 PC 的,不过我还没有试过。
@SwitchOn:@何晓雨 Rewired可以在NS平台支持NS手柄。需要额外向开发者索要NS平台插件(通过任天堂认证)。在PC上可以直接支持NS手柄,不过我只测试了Pro手柄。
@蒸熊掌:哇,学习了!以后如果游戏做好了可以考虑发NS平台了