/// <summary> /// 下一个动画。 /// </summary> private void PlayNextAnim(AnimQueueInfo pAnimQ, int nIndex, Action pBack) { if (nIndex == pAnimQ.lAnim.Count) { Debug.LogError("动画播放完啦!"); pAnimQ.bActive = false; ResetAnimQ(pAnimQ); pBack(); return; } if (pAnimQ.lAnim[nIndex].GoNextTime < 100)// 延迟播放。 { pAnimQ.lAnim[nIndex].Anim.Play(); float time = 0; DOTween.To(() => time, x => time = x, 1, pAnimQ.lAnim[nIndex].GoNextTime).OnComplete(delegate() { PlayNextAnim(pAnimQ, nIndex + 1, pBack); }); } else// 播放完当前动画播放。 { pAnimQ.lAnim[nIndex].Anim.Play().OnComplete(delegate() { PlayNextAnim(pAnimQ, nIndex + 1, pBack); }); } }
/// <summary> /// 注册动画到序列。 /// </summary> /// <param name="pName"></param> /// <param name="pTween"></param> public void RegisterAnim(string pQName, Tween pTween, float nGoNextTime) { AnimQueueInfo ItemQ = m_lAnimQInfo.Find(delegate(AnimQueueInfo Item) { return(pQName == Item.Name); }); if (ItemQ != null) { int Id = ItemQ.lAnim.Count; Action <AnimQueueInfo, int, Action> NextAction = PlayNextAnim; float GoNextTime = nGoNextTime; ItemQ.lAnim.Add(new AnimInfo(Id, pTween, NextAction, GoNextTime)); } else { int Id = 0; Action <AnimQueueInfo, int, Action> NextAction = PlayNextAnim; float GoNextTime = nGoNextTime; m_lAnimQInfo.Add(new AnimQueueInfo(pQName, new List <AnimInfo>() { new AnimInfo(Id, pTween, NextAction, GoNextTime) }, false)); } }
/// <summary> /// 重置动画。 /// </summary> private void ResetAnimQ(AnimQueueInfo pAnimQ) { foreach (AnimInfo AnimInfo in pAnimQ.lAnim) { //AnimInfo.Anim.Restart(false,1f); //AnimInfo.Anim.Pause(); } }
/// <summary> /// 开始播放开始!!! /// </summary> public void StartPlayAnim(string pQName, Action pBack) { AnimQueueInfo ItemQ = m_lAnimQInfo.Find(delegate(AnimQueueInfo Item) { return(pQName == Item.Name); }); if (ItemQ != null) { if (ItemQ.bActive) { Debug.LogError("动画正在播放"); return; } ItemQ.bActive = true; PlayNextAnim(ItemQ, 0, pBack); } }