InputAction输入控件分析

primarytouch和#0 touch 和#1touch的区别

当一次触摸式会触发 primarytouch和#0touch
此时第二根手指触摸触发#1touch
抬起地一根手指#0touch不处罚 只剩#1touch ,primarytouch不会转移到#1touch

此时再次按下第一根手指 会触发#0 touch 只触发了#1touch 仍会触发,primary touch没有触发

结论 一组手指触发时间只会在第一次触摸时会有primary, 第一根指头抬起后,这一组结束前都不会再触发

触发顺序

一般情况下的触发顺序

touch contact
positiong (start只会在第一次触发的时候触发,之后都是prefermed)
start position(start 只会在第一次触发的时候触发,之后都是prefermed)
phase
delta

经过测试,通过player input设置的方式绑定回调方法。
触发顺序不由input action中的顺序控制。
反而由input action中的创建顺序决定。非常bug的方式。
即我先创建了一个action A ,后创建了action B,如果触发方式上,一帧内同时执行,则A会先于B执行。任何方式的修改都不会改变这一现象。
触发把A删除,再重新创建。
官方建议是不要设置任何有关同一帧执行的,和顺序有关的代码

鼠标左键单击

鼠标左键的单机可以兼容interaction中的tap和hold。
猜想:一些简单的控件触发可以都可以兼容tap 和hold。例如在按下后立刻触发start和performed,在抬起后会触发cancled。这些基本可以认为是简单的触发控件。

touchphase

新版的touchphase和旧版的touchphase是不同的类,注意命名空间的不同一个时unityengine,一个是unityengine.inputsystem

设计规范

inputaction中输入的条件判断若能在一个action中实现,则在一个action中实现。
inputaction中条件的判断需要多个实现则要在phase中执行,具体的操作逻辑如果是每帧则在delta中执行
对于多帧同步,第一帧的和状态位置相关的初始值一定要赋值,或做判断
对于移动尽量使用smoothdamp ,优化用户体验。需要做到避免携程重复启用。

携程

yield return null
和yield return new waitframeend()
的区别
yield return null 在某些情况下可能无法被stopcoroutine所阻止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值