需要播放动画的各个按钮都挂上AnimSlider脚本并勾掉勾选,并调用isSet()函数和按钮对应的Toggle_1函数,才不会互相干扰
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class AnimSlider : MonoBehaviour
{
public static AnimSlider Instance;//单例模式
public Animation MyAnim;
public string Name;
public Slider us;
public float AnimaTime = 0.0f;
public bool isBegin = false;
public bool isStart = false;
// Use this for initialization
void Awake()
{
Instance = this; //单例模式
}
void Start()
{
}
// Update is called once per frame
void Update()
{
if (isBegin)
{
if (isStart)
{
AnimaTime += Time.deltaTime;//计数Update的运行时间
PlayToStart(AnimaTime);
if (AnimaTime > MyAnim[Name].length)
{
AnimaTime = 0.0f;
isStart = false;
isBegin = false;
}
}
//每一帧运行时间的累加,除以动画长度,得到Silder的Value是个比例
us.value = AnimaTime / MyAnim[Name].length;
}
}
/// <summary>
///
/// </summary>
/// <param name="Atime"></param>
public void PlayToStart(float Atime)
{
MyAnim.enabled = true;
MyAnim.CrossFade(Name);
MyAnim[Name].speed = 0.0f; //动画播放速度为0
MyAnim[Name].normalizedTime = Atime / MyAnim[Name].length;// MyAnim[Name].normalizedTime =某个0-1的值
}
/// <summary>
/// 设置AnimSlder回到初始值
/// </summary>
public void isSet()
{
PlayToStart(0.0f);//每次按下手术步骤时,动画回到第一帧
AnimaTime = 0.0f; //计数器也从0开始重新计数
us.value = 0.0f; //Slider的值归0,即回到开始状态
isStart = true; //Update开始有效
isBegin = true;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SliderAniManager : MonoBehaviour {
public GameObject[] SSLC_Toggle;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
/// <summary>
/// 开启和关闭的动画脚本AnimSlider
/// </summary>
public void EnableAnimSlder(bool isActive)
{
for (int i = 0; i < SSLC_Toggle.Length; i++)
{
SSLC_Toggle[i].GetComponent<AnimSlider>().enabled = isActive;
}
}
//------------------------------各个步骤的按钮控制脚本------------------------------------------------------------------------------/
public void Toggle_0()
{
EnableAnimSlder(false);
SSLC_Toggle[0].GetComponent<AnimSlider>().enabled = true;
}
public void Toggle_1()
{
EnableAnimSlder(false);
SSLC_Toggle[1].GetComponent<AnimSlider>().enabled = true;
}
public void Toggle_2()
{
EnableAnimSlder(false);
SSLC_Toggle[2].GetComponent<AnimSlider>().enabled = true;
}
public void Toggle_3()
{
EnableAnimSlder(false);
SSLC_Toggle[3].GetComponent<AnimSlider>().enabled = true;
}
public void Toggle_4()
{
EnableAnimSlder(false);
SSLC_Toggle[4].GetComponent<AnimSlider>().enabled = true;
}
public void Toggle_5()
{
EnableAnimSlder(false);
SSLC_Toggle[5].GetComponent<AnimSlider>().enabled = true;
}
public void Toggle_6()
{
EnableAnimSlder(false);
SSLC_Toggle[6].GetComponent<AnimSlider>().enabled = true;
}
public void Toggle_7()
{
EnableAnimSlder(false);
SSLC_Toggle[7].GetComponent<AnimSlider>().enabled = true;
}
}