public static AiukFloatTween Tween(object key, float start, float end, float duration, Action <IAiukTween <float> > progress, Action <IAiukTween <float> > completion = null, AiukEaseType aiukEaseType = AiukEaseType.Linear, string friendName = null) { var t = AiukTweenFactory.GetFloatTween(); // 给动画对象赋一个友好的命名如果存在 if (friendName == null) { var id = TweenIdCounter + 1; t.FriendNme = "Tween_" + id; } else { t.FriendNme = friendName; } t.Key = key; var scaleFunc = scaleFuncDictionary[aiukEaseType]; t.Init(start, end, duration, scaleFunc, progress, completion); AddTween(t); return(t); }
/// <summary> /// Created and add a Vector4 tween /// </summary> /// <param name="key">Key</param> /// <param name="start">Created value</param> /// <param name="end">End value</param> /// <param name="duration">CostTime in seconds</param> /// <param name="scaleFunc">Scale function</param> /// <param name="progress">Progress handler</param> /// <param name="completion">Completion handler</param> /// <returns>Vector4Tween</returns> public static AiukVector4Tween Tween(object key, Vector4 start, Vector4 end, float duration, Func <float, float> scaleFunc, Action <IAiukTween <Vector4> > progress, Action <IAiukTween <Vector4> > completion) { var t = AiukTweenFactory.GetVector4Tween(); t.Key = key; t.Init(start, end, duration, scaleFunc, progress, completion); AddTween(t); return(t); }
/// <summary> /// 启动一个颜色动画 /// </summary> /// <param name="key"></param> /// <param name="start">Created value</param> /// <param name="end">End value</param> /// <param name="duration">CostTime in seconds</param> /// <param name="progress">Progress handler</param> /// <param name="completion">Completion handler</param> /// <param name="aiukEaseType"></param> /// <returns>ColorTween</returns> public static AiukColorTween Tween(object key, Color start, Color end, float duration, Action <IAiukTween <Color> > progress, Action <IAiukTween <Color> > completion, AiukEaseType aiukEaseType = AiukEaseType.Linear) { var t = AiukTweenFactory.GetColorTween(); t.Key = key; var scaleFunc = scaleFuncDictionary[aiukEaseType]; t.Init(start, end, duration, scaleFunc, progress, completion); AddTween(t); return(t); }
/// <summary> /// 更新所有动画对象 /// </summary> private void Update() { for (var i = tweens.Count - 1; i >= 0; i--) { var tween = tweens[i]; var check1 = tween.Update(Time.deltaTime); var check2 = i < tweens.Count; var check3 = tween == tweens[i]; if (!check1 || !check2 || !check3) { continue; } var t = tweens[i]; t.Reset(); // 重置动画对象 tweens.RemoveAt(i); AiukTweenFactory.Restore(tween); } }