Slider控制Animator动画播放进度

前言

在某些应用场景中可能需要用Slider控制动画的播放进度,什么点击啊,拖拽啊,搜索一番发现都是使用的是Animation,毕竟直接有API可以调用相当的方便,可Animation是旧版的东西了,今天来说说怎么控制Animator动画,代码还是很简单的

代码

	public class UISlider :MonoBehaviour, IBeginDragHandler, IEndDragHandler, IDragHandler, IPointerDownHandler
	{
		bool drag = false;
		public Animator Animator;
		AnimatorStateInfo animatorStateInfo;
        public  Slider component
		public void SetAnimTarget(Animator target)
		{
			Animator = target;
		}
		private void OnEnable()
		{
			component.value = 0;
			drag = false;
		}

		private void Update()
		{
			if (!drag)
			{
				if (Animator)
				{
				  //获取当前动画片段信息
					animatorStateInfo = Animator.GetCurrentAnimatorStateInfo(0);
					//normalizedTime 是个0-1的值 代表进度
					component.value = animatorStateInfo.normalizedTime;
				}
				else
				{
					Hide();
				}
			}
		}

		public void OnBeginDrag(PointerEventData eventData)
		{
			drag = true;
		}

		public void OnEndDrag(PointerEventData eventData)
		{
			drag = false;
		}
	
		public void UpdateAuto_Anim(float normalizedTime)
		{
		 
			animatorStateInfo = Animator.GetCurrentAnimatorStateInfo(0);
			//从指定进度开始播放
			Animator.Play(animatorStateInfo.fullPathHash, 0, normalizedTime);
		}

		public void OnDrag(PointerEventData eventData)
		{
			drag = true;

			UpdateAuto_Anim(component.value);
		}
		public void OnPointerDown(PointerEventData eventData)
		{

			UpdateAuto_Anim(component.value);
		}

	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南宫铭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值