| 
 7014| 9
 | [编程算法] [11/19更新]Unity用输入处理系统 设计思路 | 

| 
 | ||
| 
 | ||
| 
 点评
不光是连击啦,你可以用这个输入系统玩格斗游戏了(当然现在只有输入系统…… 
 | ||
| 
 | ||
| 
 点评
唔……写在fixedUpdate里会出什么事么?我现在就是全部写在里面的,貌似还没出事的样子…… 
 
那样的话,确实lz的方案看不出什么问题呢,唯一要注意的就是别忘了——玩家按P暂停时,要不要清除队列,另外别把队列维护写在fixedupdate()里 
 
用状态机的方式我也想过,但是那样需要的中间态太多了,不好办…… 
 
不用的,只在按下了可能有后续动作的按键之后才会被扫描一次,而且只扫描规定的数量,一旦发现不匹配就不继续扫了。啊,不过分享教程感谢~ 
 | ||
| 
 点评
另外关于暂停这个事情,其实我本来就是打算用timeScale来暂停的,所以就全部写到fixedUpdate里去了。其实我就是在研究怎么暂停的时候,才知道fixedUpdate的这个特性,之前以为只是个能自定义时间特性的update罢了www 
 
我明白意思了……目前我的想法是,暂停键不算是“角色控制”的一部分,所以由另外的脚本响应,不包括在这个角色控制的脚本里,这样的话就不会干扰到按键队列的维护问题了。 
 | ||
| 
 点评
我又想到一个方法………详细看回复 
 
其实这样,你把“不按键”也想象成一种按键,那样就判断一组连续的按键是不是符合要求,就行了。说到底肯定是要有个队列来存储按键信息的。 
 
32这样不行的啦……如果Sleep的话就把整个程序阻塞住了(先不管Unity我就从Sleep原来的特性来看),什么事情都不能做了。 
 | ||
| 
 点评
超烦,还有就是同时按键的判定问题,因为实际按的时候通常都不是真的“一起按”的,而是先按了某个再按同时按住,于是这个又要针对不同情况写一堆判定,总之就是程序的优雅度各种下降(叹 
 
确实,最烦的是搓技能过程中会出现“快速按过几个按键”和“快速按上几个按键”,得区别对待也是醉了 
 
哦,这样我就明白了。嘛……我觉得用定时器控制好麻烦的所以就没这么做,而是把不按键也当成一种按键来处理,不过说到底我现在这个队列,也是建立在这个设计的基础上的 
 
@larrymario 确实有问题。。。更新了一下设计。。。 
 
——我也想过用这样的方法实现,而且确实能节省空间,不过……感觉写起来好烦啊(躺),关键一点就是对于“不按键”这个事件,我觉得处理起来很麻烦…… 
 
有一点我不明白……onKeyUp的时候就要删除这个keyCode?那样岂不是这个链里只能存储“我同时按住了多少个键”数目的keyCode么……连击系统我似乎是明白了,就是靠计时器来判定是否还在一个连续的按键序列里,—— 
 | ||
| 
 点评
懂了,其实32你这张纸上写的和我现在做的是差不多的ww不过对于按键值的处理我有更好的方法(大概),过会儿更新的时候再说 
 | ||