Unity用Slider实现滑动确认/解锁

项目中有个需求,是需要玩家滑动解锁,增加二次确认难度防止玩家误操作的一个功能,就如同iphone滑动解锁一样

Unity用Slider实现滑动确认/解锁_第1张图片
滑动解锁

我的做法 是直接采用Unity自带的Slider来实现,大概原理就是滑动handle到slider的maxvalue.然后做一些列操作


Unity用Slider实现滑动确认/解锁_第2张图片
初始状态


Unity用Slider实现滑动确认/解锁_第3张图片
确认状态

但是策划不想要这么生硬的拉扯,想做个松开按钮,如果滑动条值没有满自动缩回去的一个动画效果,和iphone一样

由于自带的slider 没有提供松开鼠标的一些事件用来监听,但是F12进入可以看到

Unity用Slider实现滑动确认/解锁_第4张图片
OnPointerDown是个override鼠标按下事件

既然有down 肯定有up,再f12父类

Unity用Slider实现滑动确认/解锁_第5张图片
OnPointerUp,virtual方法就是鼠标抬起

所以 自己扩展一个uislider组件,继承Slider


Unity用Slider实现滑动确认/解锁_第6张图片
自己扩展继承 Slider

其中m_Value,看源码可知道 就是我们slider的value

Unity用Slider实现滑动确认/解锁_第7张图片
value

扩展一个onvaluechangeend事件,去实现他即可

Unity用Slider实现滑动确认/解锁_第8张图片
松开时value小于1,就自动把value缩小至0,其中用了dotween动画



扩展下,策划虽然没有说给文字说什么动态效果,但是自己根据iphone的解锁,做了个类似呼吸灯的效果,原理也很简单,使用dotween ,对canvasgroup的扩展,动态改变alpha就行,或者改变文本颜色的透明通道也行

浅色


深色

你可能感兴趣的:(Unity用Slider实现滑动确认/解锁)