“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第11篇文章,点击查看活动详情”
👉关于作者
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
欢迎关注公众号【空名先生】获取更多资源和交流!
👉前提
这是小空坚持写的Unity新手向系列,欢迎品尝。
小空为了方便更多的人(新手)看明白,使用的汉字,真实项目尽量使用英文规则昂。
新手(√√√)
大佬(√)
👉实践过程
该控件通常可以用于技能冷却或者人物血条或者游戏里面设置功能的各种滑动条。
我们在Hierarchy窗口中右键(UI-Slider)创建一个滑动条(如下图)。会发现有五个子物体,其实主要的是Background和Fill以及Handle,另外两个带Area的是为了做宽高适配,一直填充满父物体Slider。Background便是默认的滑动条底图或底色。Fill是滑动进度的填充效果,Handle是滑动块。Slider物体有个Slider组件,除了默认的Transition(和Button中的一样)还有Fill Rect和Handler Rect。Fill Rect用来指定滑动后的填充,也就是Fill物体,Handler Rect是用来设置滑动块的。
特别声明:Background、Fill、Handle其实都是Image组件,带有Image的所有属性及特点,加上里面的Image Type,可以充分利用起来玩出花样。
Slider其他参数
Direction(方向):可以修改滑动方向,默认是从左到右,还有右到左,上到下,下到上。看下方Gif。
Min Value & Max Value:最小值和最大值。最小值最大值有助于数字化滑动的效果,比如血条的实现,就可以设置为最小值0,最大值100。
Whole Numbers:表示滑动过程为整数(默认不勾选,滑动进度带有小数),如果设置大小分为是0-1则不会有缓缓填充进度效果。当设置的大小范围最大值大于1的时候,滑动不会出现小数值。
Value:当前所处进度,范围在Min Value和Max Value之间。
设置监听事件有两种:
public class TestSlider : MonoBehaviour
{
private void Start()
{
//代码形式添加
gameObject.GetComponent<Slider>().onValueChanged.AddListener(SliderChange);
}
//外面Unity编辑器中选择指定
public void SliderChange(float value)
{
Debug.Log("注意一定要选择Dynamic float下的方法名,滑动的进度" + value);
}
}
如果你想添加进度条开始拖动的瞬间。以及结束拖动的瞬间 可以自定义一个Slider。
也可以直接继承IBeginDragHandler,IEndDragHandler,两种方法。 方法一
public class TestSlider : MonoBehaviour,IBeginDragHandler,IEndDragHandler
{
private void Start()
{
//代码形式添加
gameObject.GetComponent<Slider>().onValueChanged.AddListener(SliderChange);
}
//外面Unity编辑器中选择指定
public void SliderChange(float value)
{
Debug.Log("注意一定要选择Dynamic float下的方法名,滑动的进度" + value);
}
public void OnBeginDrag(PointerEventData eventData)
{
Debug.Log("开始拖动" + eventData.button);
}
public void OnEndDrag(PointerEventData eventData)
{
Debug.Log("结束拖动" + eventData.position);
}
}
方法二 自定义Slider就需要Unity编辑器中的物体挂载你自定义的脚本了。
public class TestSlider : MonoBehaviour
{
private void Start()
{
//代码形式添加
gameObject.GetComponent<CustomSlider>().onValueChanged.AddListener(SliderChange);
gameObject.GetComponent<CustomSlider>().beiginDrag = OnSliderDragBegin;
gameObject.GetComponent<CustomSlider>().endDrag = OnSliderDragEnd;
}
private void OnSliderDragBegin()
{
Debug.Log("开始拖动");
}
private void OnSliderDragEnd()
{
Debug.Log("结束拖动");
}
//外面Unity编辑器中选择指定
public void SliderChange(float value)
{
Debug.Log("滑动的进度" + value);
}
}
👉其他
📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:芝麻粒儿 的个人主页 - 专栏 - 掘金 (juejin.cn)
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。