1.简单搭建UI,通过Slider来控制Cube当前状态动画的播放
2.给Cube加上Animator组件,做两个简单的动画(随便做个来回移动的动画就行),注意要关闭动画的循环播放
3.给摄像机挂在脚本,并拖拽对应组件
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SliderAni : MonoBehaviour
{
public static Animator ani;
public Slider ani_Slider;//滑动条
public Button play;//播放按钮
public Button pause;//暂停按钮
public Button replay;//重播按钮
public Button nextplay;//播放下一个动画按钮
public static bool isStop = true;
public List<AnimationClip> t = new List<AnimationClip>();//记录对应动画控制器中的所有动画片段
int index = 0;
void Start()
{
ani = GameObject.Find("Cube").GetComponent<Animator>();
AnimationClip[] clip = ani.runtimeAnimatorController.animationClips;
foreach(AnimationClip item in clip)
{
t.Add(item);
}
play.onClick.AddListener(PlayOnClickBtn);//添加监听事件
pause.onClick.AddListener(PauseOnClickBtn);
replay.onClick.AddListener(RePlayOnClickBtn);
nextplay.onClick.AddListener(NextPlayOnClickBtn);
ani_Slider.minValue = 0;
ani_Slider.maxValue = clip[0].length;
ani_Slider.value = 0;
ani.Play("run", 0, 0);
}
private void Update()
{
ChangeName();
}
public void ChangeName()
{
if (isStop)
{
if (index == 0)
{
ani_Slider.value = ani.GetCurrentAnimatorStateInfo(0).normalizedTime * t[index].length;
}
if (index == 1)
{
ani_Slider.value = ani.GetCurrentAnimatorStateInfo(0).normalizedTime * t[index].length;
}
}
else
{
ani.Play(t[index].name, 0, ani_Slider.value / t[index].length);
}
}
public void PlayOnClickBtn()
{
ani.speed = 1;
}
public void PauseOnClickBtn()
{
ani.speed = 0;
}
public void RePlayOnClickBtn()
{
ani.Play(t[index].name, 0, 0f);
ani.speed = 1;
}
public void NextPlayOnClickBtn()
{
index = 1;
ani_Slider.minValue = 0;
ani_Slider.maxValue = t[index].length;
ani_Slider.onValueChanged.RemoveAllListeners();
ani.Play("run2", 0, 0f);
}
}
4.给Slider挂载脚本
using UnityEngine;
using UnityEngine.EventSystems;
public class Test : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
public void OnPointerDown(PointerEventData eventData)
{
SliderAni.ani.speed = 0;
SliderAni.isStop = false;
}
public void OnPointerUp(PointerEventData eventData)
{
SliderAni.ani.speed = 1;
SliderAni.isStop = true;
}
}
5.运行Unity即可