using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using System; using System.Collections; using System.Collections.Generic; public enum Curve { Linear, EaseOutQuad, } public enum EventType { ForwardStart, BackwardStart, ForwardFinish, BackwardFinish, } public delegate float ShakeFunctionF(float timer, float duration, int repeat, float start, float strength); public delegate Color ShakeFunctionC(float timer, float duration, int repeat, Color start, Color strength); public delegate Vector3 ShakeFunctionV(float timer, float duration, int repeat, Vector3 start, Vector3 strength); public delegate float CurveFunctionF(float timer, float duration, float start, float delta); public delegate Color CurveFunctionC(float timer, float duration, Color start, Color delta); public delegate Vector3 CurveFunctionV(float timer, float duration, Vector3 start, Vector3 delta); public class ManaAnim : Regist { #region 变量 public static List MoveList; public static List TweenForList; public static List TweenBacList; public static Dictionary ShakeFuncDicF; public static Dictionary ShakeFuncDicC; public static Dictionary ShakeFuncDicV; public static Dictionary CurveFuncDicF; public static Dictionary CurveFuncDicC; public static Dictionary CurveFuncDicV; public static Dictionary ShakeDic; public static Dictionary MoveDic2D; public static Dictionary MoveDic3D; public static Dictionary TweenSrDic; public static Dictionary TweenCgDic; public static Dictionary TweenGraDic; public static Dictionary TweenVecDic; public static Dictionary TweenTextDic; public static Dictionary TweenRectDic; public static Dictionary TweenScaleDic; public static Dictionary TweenAudioDic; public static Dictionary TweenNumberDic; #endregion public void FixedUpdate() { for (int i = 0; i < MoveList.Count; i++) { if (MoveList[i].Do()) { i--; } } for (int i = 0; i < TweenForList.Count; i++) { if (TweenForList[i].DoForward()) { i--; } } for (int i = 0; i < TweenBacList.Count; i++) { if (TweenBacList[i].DoBackward()) { i--; } } } public override void RegistValueA() { MoveList = new List(); TweenForList = new List(); TweenBacList = new List(); ShakeFuncDicF = new Dictionary(); ShakeFuncDicC = new Dictionary(); ShakeFuncDicV = new Dictionary(); CurveFuncDicF = new Dictionary(); CurveFuncDicC = new Dictionary(); CurveFuncDicV = new Dictionary(); ShakeDic = new Dictionary(); MoveDic3D = new Dictionary(); MoveDic2D = new Dictionary(); TweenSrDic = new Dictionary(); TweenCgDic = new Dictionary(); TweenGraDic = new Dictionary(); TweenVecDic = new Dictionary(); TweenTextDic = new Dictionary(); TweenRectDic = new Dictionary(); TweenScaleDic = new Dictionary(); TweenAudioDic = new Dictionary(); TweenNumberDic = new Dictionary(); ShakeFuncDicF.Add(Curve.Linear, ShakeLinear); ShakeFuncDicF.Add(Curve.EaseOutQuad, ShakeEaseOutQuad); ShakeFuncDicC.Add(Curve.Linear, ShakeLinear); ShakeFuncDicC.Add(Curve.EaseOutQuad, ShakeEaseOutQuad); ShakeFuncDicV.Add(Curve.Linear, ShakeLinear); ShakeFuncDicV.Add(Curve.EaseOutQuad, ShakeEaseOutQuad); CurveFuncDicF.Add(Curve.Linear, Linear); CurveFuncDicF.Add(Curve.EaseOutQuad, EaseOutQuad); CurveFuncDicC.Add(Curve.Linear, Linear); CurveFuncDicC.Add(Curve.EaseOutQuad, EaseOutQuad); CurveFuncDicV.Add(Curve.Linear, Linear); CurveFuncDicV.Add(Curve.EaseOutQuad, EaseOutQuad); } public override void TutorialRegistValue() { RegistValueA(); } #region 曲线 public static float LinearTimer(float value, float duration, float start, float delta) { return (value - start) * duration / delta; } public static float EaseOutQuadTimer(float value, float duration, float start, float delta) { return ((2 - Mathf.Sqrt(4 - 4*(value - start)/delta))/2)*duration; } public static float ShakeLinear(float timer, float duration, int repeat, float start, float strength) { float sliceTime = duration/(4*repeat); for (int i = 0; i < repeat*4; i += 4) { if (timer > duration) { return start; } if (timer <= (i + 1) * sliceTime) { timer -= (i)*sliceTime; return Linear(timer, sliceTime, start, strength/(i/4 + 1)); } else if (timer <= (i + 3)*sliceTime) { timer -= (i + 1)*sliceTime; return Linear(timer, 2*sliceTime, start + strength/(i/4 + 1), -2*strength/(i/4 + 1)); } else if (timer <= (i + 4)*sliceTime) { timer -= (i + 3)*sliceTime; return Linear(timer, sliceTime, start - strength/(i/4 + 1), strength/(i/4 + 1)); } } throw new Exception(); } public static Color ShakeLinear(float timer, float duration, int repeat, Color start, Color strength) { float sliceTime = duration / (4 * repeat); for (int i = 0; i < repeat * 4; i += 4) { if (timer > duration) { return start; } if (timer <= (i + 1) * sliceTime) { timer -= (i) * sliceTime; return Linear(timer, sliceTime, start, strength / (i / 4 + 1)); } else if (timer <= (i + 3) * sliceTime) { timer -= (i + 1) * sliceTime; return Linear(timer, 2 * sliceTime, start + strength / (i / 4 + 1), -2 * strength / (i / 4 + 1)); } else if (timer <= (i + 4) * sliceTime) { timer -= (i + 3) * sliceTime; return Linear(timer, sliceTime, start - strength / (i / 4 + 1), strength / (i / 4 + 1)); } } throw new Exception(); } public static Vector3 ShakeLinear(float timer, float duration, int repeat, Vector3 start, Vector3 strength) { float sliceTime = duration / (4 * repeat); for (int i = 0; i < repeat * 4; i += 4) { if (timer > duration) { return start; } if (timer <= (i + 1) * sliceTime) { timer -= (i) * sliceTime; return Linear(timer, sliceTime, start, strength / (i / 4 + 1)); } else if (timer <= (i + 3) * sliceTime) { timer -= (i + 1) * sliceTime; return Linear(timer, 2 * sliceTime, start + strength / (i / 4 + 1), -2 * strength / (i / 4 + 1)); } else if (timer <= (i + 4) * sliceTime) { timer -= (i + 3) * sliceTime; return Linear(timer, sliceTime, start - strength / (i / 4 + 1), strength / (i / 4 + 1)); } } throw new Exception(); } public static float ShakeEaseOutQuad(float timer, float duration, int repeat, float start, float strength) { float sliceTime = duration / (4 * repeat); for (int i = 0; i < repeat * 4; i += 4) { if (timer > duration) { return start; } if (timer <= (i + 1) * sliceTime) { timer -= (i) * sliceTime; return EaseOutQuad(timer, sliceTime, start, strength / (i / 4 + 1)); } else if (timer <= (i + 3) * sliceTime) { timer -= (i + 1) * sliceTime; return EaseOutQuad(timer, 2 * sliceTime, start + strength / (i / 4 + 1), -2 * strength / (i / 4 + 1)); } else if (timer <= (i + 4) * sliceTime) { timer -= (i + 3) * sliceTime; return EaseOutQuad(timer, sliceTime, start - strength / (i / 4 + 1), strength / (i / 4 + 1)); } } throw new Exception(); } public static Color ShakeEaseOutQuad(float timer, float duration, int repeat, Color start, Color strength) { float sliceTime = duration / (4 * repeat); for (int i = 0; i < repeat * 4; i += 4) { if (timer > duration) { return start; } if (timer <= (i + 1) * sliceTime) { timer -= (i) * sliceTime; return EaseOutQuad(timer, sliceTime, start, strength / (i / 4 + 1)); } else if (timer <= (i + 3) * sliceTime) { timer -= (i + 1) * sliceTime; return EaseOutQuad(timer, 2 * sliceTime, start + strength / (i / 4 + 1), -2 * strength / (i / 4 + 1)); } else if (timer <= (i + 4) * sliceTime) { timer -= (i + 3) * sliceTime; return EaseOutQuad(timer, sliceTime, start - strength / (i / 4 + 1), strength / (i / 4 + 1)); } } throw new Exception(); } public static Vector3 ShakeEaseOutQuad(float timer, float duration, int repeat, Vector3 start, Vector3 strength) { float sliceTime = duration / (4 * repeat); for (int i = 0; i < repeat * 4; i += 4) { if (timer > duration) { return start; } if (timer <= (i + 1) * sliceTime) { timer -= (i) * sliceTime; return EaseOutQuad(timer, sliceTime, start, strength / (i / 4 + 1)); } else if (timer <= (i + 3) * sliceTime) { timer -= (i + 1) * sliceTime; return EaseOutQuad(timer, 2 * sliceTime, start + strength / (i / 4 + 1), -2 * strength / (i / 4 + 1)); } else if (timer <= (i + 4) * sliceTime) { timer -= (i + 3) * sliceTime; return EaseOutQuad(timer, sliceTime, start - strength / (i / 4 + 1), strength / (i / 4 + 1)); } } throw new Exception(); } public static float Linear(float timer, float duration, float start, float delta) { if (Math.Abs(duration) < 0.0005f) { return delta + start; } else { return delta * timer / duration + start; } } public static Color Linear(float timer, float duration, Color start, Color delta) { return new Color(Linear(timer, duration, start.r, delta.r), Linear(timer, duration, start.g, delta.g), Linear(timer, duration, start.b, delta.b), Linear(timer, duration, start.a, delta.a)); } public static Vector3 Linear(float timer, float duration, Vector3 start, Vector3 delta) { return new Vector3(Linear(timer, duration, start.x, delta.x), Linear(timer, duration, start.y, delta.y), Linear(timer, duration, start.z, delta.z)); } public static float EaseOutQuad(float timer, float duration, float start, float delta) { if (Math.Abs(duration) < 0.0005f) { return delta + start; } else { timer /= duration; return -delta * timer * (timer - 2) + start; } } public static Color EaseOutQuad(float timer, float duration, Color start, Color delta) { return new Color(EaseOutQuad(timer, duration, start.r, delta.r), EaseOutQuad(timer, duration, start.g, delta.g), EaseOutQuad(timer, duration, start.b, delta.b), EaseOutQuad(timer, duration, start.a, delta.a)); } public static Vector3 EaseOutQuad(float timer, float duration, Vector3 start, Vector3 delta) { return new Vector3(EaseOutQuad(timer, duration, start.x, delta.x), EaseOutQuad(timer, duration, start.y, delta.y), EaseOutQuad(timer, duration, start.z, delta.z)); } #endregion #region 播放动画 public static Shake Shake(Transform target, float duration, int repeat, Vector3 strength, Curve curve) { Shake move; if (ShakeDic.TryGetValue(target, out move)) { move.StartShake(repeat, duration, strength, curve); } else { move = CreateShake(target); move.StartShake(repeat, duration, strength, curve); } return move; } public static Move2D Move2D(Transform target, Vector3 destination, float duration, bool local, Curve curve) { Move2D move; if (MoveDic2D.TryGetValue(target, out move)) { move.StartMove(destination, duration, local, curve); } else { move = CreateMove2D(target); move.StartMove(destination, duration, local, curve); } return move; } public static Move3D Move3D(Transform target, Vector3 destination, float duration, bool local, Curve curve) { Move3D move; if (MoveDic3D.TryGetValue(target, out move)) { move.StartMove(destination, duration, local, curve); } else { move = CreateMove3D(target); move.StartMove(destination, duration, local, curve); } return move; } public static TweenSr TweenForSr(Transform target) { TweenSr tween; if (TweenSrDic.TryGetValue(target, out tween)) { tween.StartForward(); } else { throw new Exception(); } return tween; } public static TweenCG TweenForCG(Transform target) { TweenCG tween; if (TweenCgDic.TryGetValue(target, out tween)) { tween.StartForward(); } else { throw new Exception(); } return tween; } public static TweenGra TweenForGra(Transform target) { TweenGra tween; if (TweenGraDic.TryGetValue(target, out tween)) { tween.StartForward(); } else { throw new Exception(); } return tween; } public static TweenVec TweenForVec(Transform target) { TweenVec tween; if (TweenVecDic.TryGetValue(target, out tween)) { tween.StartForward(); } else { throw new Exception(); } return tween; } public static TweenText TweenForText(Transform target) { TweenText tween; if (TweenTextDic.TryGetValue(target, out tween)) { tween.StartForward(); } else { throw new Exception(); } return tween; } public static TweenRect TweenForRect(Transform target) { TweenRect tween; if (TweenRectDic.TryGetValue(target, out tween)) { tween.StartForward(); } else { throw new Exception(); } return tween; } public static TweenScale TweenForScale(Transform target) { TweenScale tween; if (TweenScaleDic.TryGetValue(target, out tween)) { tween.StartForward(); } else { throw new Exception(); } return tween; } public static TweenAudio TweenForAudio(Transform target) { TweenAudio tween; if (TweenAudioDic.TryGetValue(target, out tween)) { tween.StartForward(); } else { throw new Exception(); } return tween; } public static TweenNumber TweenForNumber(Transform target) { TweenNumber tween; if (TweenNumberDic.TryGetValue(target, out tween)) { tween.StartForward(); } else { throw new Exception(); } return tween; } public static TweenSr TweenBacSr(Transform target) { TweenSr tween; if (TweenSrDic.TryGetValue(target, out tween)) { tween.StartBackward(); } else { throw new Exception(); } return tween; } public static TweenCG TweenBacCG(Transform target) { TweenCG tween; if (TweenCgDic.TryGetValue(target, out tween)) { tween.StartBackward(); } else { throw new Exception(); } return tween; } public static TweenGra TweenBacGra(Transform target) { TweenGra tween; if (TweenGraDic.TryGetValue(target, out tween)) { tween.StartBackward(); } else { throw new Exception(target.name); } return tween; } public static TweenVec TweenBacVec(Transform target) { TweenVec tween; if (TweenVecDic.TryGetValue(target, out tween)) { tween.StartBackward(); } else { throw new Exception(target.name); } return tween; } public static TweenText TweenBacText(Transform target) { TweenText tween; if (TweenTextDic.TryGetValue(target, out tween)) { tween.StartBackward(); } else { throw new Exception(); } return tween; } public static TweenRect TweenBacRect(Transform target) { TweenRect tween; if (TweenRectDic.TryGetValue(target, out tween)) { tween.StartBackward(); } else { throw new Exception(); } return tween; } public static TweenScale TweenBacScale(Transform target) { TweenScale tween; if (TweenScaleDic.TryGetValue(target, out tween)) { tween.StartBackward(); } else { throw new Exception(); } return tween; } public static TweenAudio TweenBacAudio(Transform target) { TweenAudio tween; if (TweenAudioDic.TryGetValue(target, out tween)) { tween.StartBackward(); } else { throw new Exception(); } return tween; } public static TweenNumber TweenBacNumber(Transform target) { TweenNumber tween; if (TweenNumberDic.TryGetValue(target, out tween)) { tween.StartBackward(); } else { throw new Exception(); } return tween; } public static TweenSr TweenConForSr(Transform target) { TweenSr tween; if (TweenSrDic.TryGetValue(target, out tween)) { tween.ConfineForward(); } else { throw new Exception(); } return tween; } public static TweenCG TweenConForCG(Transform target) { TweenCG tween; if (TweenCgDic.TryGetValue(target, out tween)) { tween.ConfineForward(); } else { throw new Exception(); } return tween; } public static TweenGra TweenConForGra(Transform target) { TweenGra tween; if (TweenGraDic.TryGetValue(target, out tween)) { tween.ConfineForward(); } else { throw new Exception(); } return tween; } public static TweenVec TweenConForVec(Transform target) { TweenVec tween; if (TweenVecDic.TryGetValue(target, out tween)) { tween.ConfineForward(); } else { throw new Exception(); } return tween; } public static TweenText TweenConForText(Transform target) { TweenText tween; if (TweenTextDic.TryGetValue(target, out tween)) { tween.ConfineForward(); } else { throw new Exception(); } return tween; } public static TweenRect TweenConForRect(Transform target) { TweenRect tween; if (TweenRectDic.TryGetValue(target, out tween)) { tween.ConfineForward(); } else { throw new Exception(); } return tween; } public static TweenScale TweenConForScale(Transform target) { TweenScale tween; if (TweenScaleDic.TryGetValue(target, out tween)) { tween.ConfineForward(); } else { throw new Exception(); } return tween; } public static TweenAudio TweenConForAudio(Transform target) { TweenAudio tween; if (TweenAudioDic.TryGetValue(target, out tween)) { tween.ConfineForward(); } else { throw new Exception(); } return tween; } public static TweenNumber TweenConForNumber(Transform target) { TweenNumber tween; if (TweenNumberDic.TryGetValue(target, out tween)) { tween.ConfineForward(); } else { throw new Exception(); } return tween; } public static TweenSr TweenConBacSr(Transform target) { TweenSr tween; if (TweenSrDic.TryGetValue(target, out tween)) { tween.ConfineBackward(); } else { throw new Exception(); } return tween; } public static TweenCG TweenConBacCG(Transform target) { TweenCG tween; if (TweenCgDic.TryGetValue(target, out tween)) { tween.ConfineBackward(); } else { throw new Exception(); } return tween; } public static TweenGra TweenConBacGra(Transform target) { TweenGra tween; if (TweenGraDic.TryGetValue(target, out tween)) { tween.ConfineBackward(); } else { throw new Exception(target.name); } return tween; } public static TweenVec TweenConBacVec(Transform target) { TweenVec tween; if (TweenVecDic.TryGetValue(target, out tween)) { tween.ConfineBackward(); } else { throw new Exception(target.name); } return tween; } public static TweenText TweenConBacText(Transform target) { TweenText tween; if (TweenTextDic.TryGetValue(target, out tween)) { tween.ConfineBackward(); } else { throw new Exception(); } return tween; } public static TweenRect TweenConBacRect(Transform target) { TweenRect tween; if (TweenRectDic.TryGetValue(target, out tween)) { tween.ConfineBackward(); } else { throw new Exception(); } return tween; } public static TweenScale TweenConBacScale(Transform target) { TweenScale tween; if (TweenScaleDic.TryGetValue(target, out tween)) { tween.ConfineBackward(); } else { throw new Exception(); } return tween; } public static TweenAudio TweenConBacAudio(Transform target) { TweenAudio tween; if (TweenAudioDic.TryGetValue(target, out tween)) { tween.ConfineBackward(); } else { throw new Exception(); } return tween; } public static TweenNumber TweenConBacNumber(Transform target) { TweenNumber tween; if (TweenNumberDic.TryGetValue(target, out tween)) { tween.ConfineBackward(); } else { throw new Exception(); } return tween; } #endregion #region 得到动画 public static Shake GetShake(Transform target) { Shake shake; if (ShakeDic.TryGetValue(target, out shake)) { return shake; } else { throw new Exception(); } } public static Move2D GetMove2D(Transform target) { Move2D move2D; if (MoveDic2D.TryGetValue(target, out move2D)) { return move2D; } else { throw new Exception(); } } public static Move3D GetMove3D(Transform target) { Move3D move3D; if (MoveDic3D.TryGetValue(target, out move3D)) { return move3D; } else { throw new Exception(); } } public static TweenSr GetTweenSr(Transform target) { TweenSr tweenSr; if (TweenSrDic.TryGetValue(target, out tweenSr)) { return tweenSr; } else { throw new Exception(); } } public static TweenCG GetTweenCG(Transform target) { TweenCG tweenCG; if (TweenCgDic.TryGetValue(target, out tweenCG)) { return tweenCG; } else { throw new Exception(); } } public static TweenGra GetTweenGra(Transform target) { TweenGra tweenGra; if (TweenGraDic.TryGetValue(target, out tweenGra)) { return tweenGra; } else { throw new Exception(); } } public static TweenVec GetTweenVec(Transform target) { TweenVec tweenVec; if (TweenVecDic.TryGetValue(target, out tweenVec)) { return tweenVec; } else { throw new Exception(); } } public static TweenText GetTweenText(Transform target) { TweenText tweenText; if (TweenTextDic.TryGetValue(target, out tweenText)) { return tweenText; } else { throw new Exception(); } } public static TweenRect GetTweenRect(Transform target) { TweenRect tweenRect; if (TweenRectDic.TryGetValue(target, out tweenRect)) { return tweenRect; } else { throw new Exception(); } } public static TweenScale GetTweenScale(Transform target) { TweenScale tweenScale; if (TweenScaleDic.TryGetValue(target, out tweenScale)) { return tweenScale; } else { throw new Exception(); } } public static TweenAudio GetTweenAudio(Transform target) { TweenAudio tween; if (TweenAudioDic.TryGetValue(target, out tween)) { return tween; } else { throw new Exception(); } } public static TweenNumber GetTweenNumber(Transform target) { TweenNumber tween; if (TweenNumberDic.TryGetValue(target, out tween)) { return tween; } else { throw new Exception(); } } #endregion #region 创建动画 public static Shake CreateShake(Transform target) { if (ShakeDic.ContainsKey(target)) { Shake shake = ShakeDic[target]; shake = new Shake(target); return shake; } else { Shake shake = new Shake(target); ShakeDic.Add(target, shake); return shake; } } public static Move2D CreateMove2D(Transform target) { if (MoveDic2D.ContainsKey(target)) { Move2D move2D = MoveDic2D[target]; move2D = new Move2D(target); return move2D; } else { Move2D move2D = new Move2D(target); MoveDic2D.Add(target, move2D); return move2D; } } public static Move3D CreateMove3D(Transform target) { if (MoveDic3D.ContainsKey(target)) { Move3D move3D = MoveDic3D[target]; move3D = new Move3D(target); return move3D; } else { Move3D move3D = new Move3D(target); MoveDic3D.Add(target, move3D); return move3D; } } public static TweenSr CreateTweenSr(Transform target, float originAlpha, float destinationAlpha, float duration, bool group, bool originActive, bool destActive, Curve curve) { TweenSr tween; SpriteRenderer sr = target.GetComponent(); Color origin = sr.color; Color destination = sr.color; origin.a = originAlpha; destination.a = destinationAlpha; if (TweenSrDic.ContainsKey(target)) { tween = TweenSrDic[target]; tween = new TweenSr(sr, origin, destination, duration, group, originActive, destActive, curve); return tween; } else { tween = new TweenSr(sr, origin, destination, duration, group, originActive, destActive, curve); TweenSrDic.Add(target, tween); return tween; } } public static TweenSr CreateTweenSr(Transform target, float destinationAlpha, float duration, bool group, bool originActive, bool destActive, Curve curve) { TweenSr tween; SpriteRenderer sr = target.GetComponent(); Color destination = sr.color; destination.a = destinationAlpha; if (TweenSrDic.ContainsKey(target)) { tween = TweenSrDic[target]; tween = new TweenSr(sr, sr.color, destination, duration, group, originActive, destActive, curve); return tween; } else { tween = new TweenSr(sr, sr.color, destination, duration, group, originActive, destActive, curve); TweenSrDic.Add(target, tween); return tween; } } public static TweenSr CreateTweenSr(Transform target, Color origin, Color destination, float duration, bool group, bool originActive, bool destActive, Curve curve) { if (TweenSrDic.ContainsKey(target)) { SpriteRenderer sr = target.GetComponent(); TweenSr tween = TweenSrDic[target]; tween = new TweenSr(sr, origin, destination, duration, group, originActive, destActive, curve); return tween; } else { SpriteRenderer sr = target.GetComponent(); TweenSr tween = new TweenSr(sr, origin, destination, duration, group, originActive, destActive, curve); TweenSrDic.Add(target, tween); return tween; } } public static TweenSr CreateTweenSr(Transform target, Color destination, float duration, bool group, bool originActive, bool destActive, Curve curve) { if (TweenSrDic.ContainsKey(target)) { SpriteRenderer sr = target.GetComponent(); TweenSr tween = TweenSrDic[target]; tween = new TweenSr(sr, sr.color, destination, duration, group, originActive, destActive, curve); return tween; } else { SpriteRenderer sr = target.GetComponent(); TweenSr tween = new TweenSr(sr, sr.color, destination, duration, group, originActive, destActive, curve); TweenSrDic.Add(target, tween); return tween; } } public static TweenCG CreateTweenCG(Transform target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve) { if (TweenCgDic.ContainsKey(target)) { CanvasGroup cg = target.GetComponent(); TweenCG tween = TweenCgDic[target]; tween = new TweenCG(cg, origin, destination, duration, originActive, destActive, curve); return tween; } else { CanvasGroup cg = target.GetComponent(); TweenCG tween = new TweenCG(cg, origin, destination, duration, originActive, destActive, curve); TweenCgDic.Add(target, tween); return tween; } } public static TweenCG CreateTweenCG(Transform target, float destination, float duration, bool originActive, bool destActive, Curve curve) { if (TweenCgDic.ContainsKey(target)) { CanvasGroup cg = target.GetComponent(); TweenCG tween = TweenCgDic[target]; tween = new TweenCG(cg, cg.alpha, destination, duration, originActive, destActive, curve); return tween; } else { CanvasGroup cg = target.GetComponent(); TweenCG tween = new TweenCG(cg, cg.alpha, destination, duration, originActive, destActive, curve); TweenCgDic.Add(target, tween); return tween; } } public static TweenGra CreateTweenGra(Transform target, float originAlpha, float destinationAlpha, float duration, bool originActive, bool destActive, Curve curve) { Graphic graphic = target.GetComponent(); TweenGra tween; Color origin = graphic.color; Color destination = graphic.color; origin.a = originAlpha; destination.a = destinationAlpha; if (TweenGraDic.ContainsKey(target)) { tween = TweenGraDic[target]; tween = new TweenGra(graphic, origin, destination, duration, originActive, destActive, curve); return tween; } else { tween = new TweenGra(graphic, origin, destination, duration, originActive, destActive, curve); TweenGraDic.Add(target, tween); return tween; } } public static TweenGra CreateTweenGra(Transform target, float destinationAlpha, float duration, bool originActive, bool destActive, Curve curve) { Graphic graphic = target.GetComponent(); TweenGra tween; Color destination = graphic.color; destination.a = destinationAlpha; if (TweenGraDic.ContainsKey(target)) { tween = TweenGraDic[target]; tween = new TweenGra(graphic, graphic.color, destination, duration, originActive, destActive, curve); return tween; } else { tween = new TweenGra(graphic, graphic.color, destination, duration, originActive, destActive, curve); TweenGraDic.Add(target, tween); return tween; } } public static TweenGra CreateTweenGra(Transform target, Color origin, Color destination, float duration, bool originActive, bool destActive, Curve curve) { if (TweenGraDic.ContainsKey(target)) { Graphic graphic = target.GetComponent(); TweenGra tween = TweenGraDic[target]; tween = new TweenGra(graphic, origin, destination, duration, originActive, destActive, curve); return tween; } else { Graphic graphic = target.GetComponent(); TweenGra tween = new TweenGra(graphic, origin, destination, duration, originActive, destActive, curve); TweenGraDic.Add(target, tween); return tween; } } public static TweenGra CreateTweenGra(Transform target, Color destination, float duration, bool originActive, bool destActive, Curve curve) { if (TweenGraDic.ContainsKey(target)) { Graphic graphic = target.GetComponent(); TweenGra tween = TweenGraDic[target]; tween = new TweenGra(graphic, graphic.color, destination, duration, originActive, destActive, curve); return tween; } else { Graphic graphic = target.GetComponent(); TweenGra tween = new TweenGra(graphic, graphic.color, destination, duration, originActive, destActive, curve); TweenGraDic.Add(target, tween); return tween; } } public static TweenVec CreateTweenVec2D(Transform target, Vector3 origin, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve) { origin.z = target.position.z; destination.z = target.position.z; if (TweenVecDic.ContainsKey(target)) { TweenVec tween = TweenVecDic[target]; tween = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve); return tween; } else { TweenVec tween = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve); TweenVecDic.Add(target, tween); return tween; } } public static TweenVec CreateTweenVec2D(Transform target, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve) { destination.z = target.position.z; if (TweenVecDic.ContainsKey(target)) { TweenVec tween = TweenVecDic[target]; if (local) { tween = new TweenVec(target, target.localPosition, destination, duration, local, originActive, destActive, curve); } else { tween = new TweenVec(target, target.position, destination, duration, local, originActive, destActive, curve); } return tween; } else { TweenVec tween; if (local) { tween = new TweenVec(target, target.localPosition, destination, duration, local, originActive, destActive, curve); } else { tween = new TweenVec(target, target.position, destination, duration, local, originActive, destActive, curve); } TweenVecDic.Add(target, tween); return tween; } } public static TweenVec CreateTweenVec3D(Transform target, Vector3 origin, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve) { if (TweenVecDic.ContainsKey(target)) { TweenVec tween = TweenVecDic[target]; tween = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve); return tween; } else { TweenVec tween = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve); TweenVecDic.Add(target, tween); return tween; } } public static TweenVec CreateTweenVec3D(Transform target, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve) { if (TweenVecDic.ContainsKey(target)) { TweenVec tween = TweenVecDic[target]; if (local) { tween = new TweenVec(target, target.localPosition, destination, duration, local, originActive, destActive, curve); } else { tween = new TweenVec(target, target.position, destination, duration, local, originActive, destActive, curve); } return tween; } else { TweenVec tween; if (local) { tween = new TweenVec(target, target.localPosition, destination, duration, local, originActive, destActive, curve); } else { tween = new TweenVec(target, target.position, destination, duration, local, originActive, destActive, curve); } TweenVecDic.Add(target, tween); return tween; } } public static TweenText CreateTweenText(Transform target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve) { if (TweenRectDic.ContainsKey(target)) { Text text = target.GetComponent(); TweenText tween = TweenTextDic[target]; tween = new TweenText(text, origin, destination, duration, originActive, destActive, curve); return tween; } else { Text text = target.GetComponent(); TweenText tween = new TweenText(text, origin, destination, duration, originActive, destActive, curve); TweenTextDic.Add(target, tween); return tween; } } public static TweenText CreateTweenText(Transform target, float destination, float duration, bool originActive, bool destActive, Curve curve) { if (TweenRectDic.ContainsKey(target)) { Text text = target.GetComponent(); TweenText tween = TweenTextDic[target]; tween = new TweenText(text, text.fontSize, destination, duration, originActive, destActive, curve); return tween; } else { Text text = target.GetComponent(); TweenText tween = new TweenText(text, text.fontSize, destination, duration, originActive, destActive, curve); TweenTextDic.Add(target, tween); return tween; } } public static TweenRect CreateTweenRect(Transform target, Vector2 origin, Vector2 destination, float duration, bool originActive, bool destActive, Curve curve) { if (TweenRectDic.ContainsKey(target)) { RectTransform rectTra = target.GetComponent(); TweenRect tween = TweenRectDic[target]; tween = new TweenRect(rectTra, origin, destination, duration, originActive, destActive, curve); return tween; } else { RectTransform rectTra = target.GetComponent(); TweenRect tween = new TweenRect(rectTra, origin, destination, duration, originActive, destActive, curve); TweenRectDic.Add(target, tween); return tween; } } public static TweenRect CreateTweenRect(Transform target, Vector2 destination, float duration, bool originActive, bool destActive, Curve curve) { if (TweenRectDic.ContainsKey(target)) { RectTransform rectTra = target.GetComponent(); TweenRect tween = TweenRectDic[target]; tween = new TweenRect(rectTra, rectTra.rect.size, destination, duration, originActive, destActive, curve); return tween; } else { RectTransform rectTra = target.GetComponent(); TweenRect tween = new TweenRect(rectTra, rectTra.rect.size, destination, duration, originActive, destActive, curve); TweenRectDic.Add(target, tween); return tween; } } public static TweenScale CreateTweenScale(Transform target, Vector3 origin, Vector3 destination, float duration, bool originActive, bool destActive, Curve curve) { if (TweenScaleDic.ContainsKey(target)) { TweenScale tween = TweenScaleDic[target]; tween = new TweenScale(target, origin, destination, duration, originActive, destActive, curve); return tween; } else { TweenScale tween = new TweenScale(target, origin, destination, duration, originActive, destActive, curve); TweenScaleDic.Add(target, tween); return tween; } } public static TweenScale CreateTweenScale(Transform target, Vector3 destination, float duration, bool originActive, bool destActive, Curve curve) { if (TweenScaleDic.ContainsKey(target)) { TweenScale tween = TweenScaleDic[target]; tween = new TweenScale(target, target.lossyScale, destination, duration, originActive, destActive, curve); return tween; } else { TweenScale tween = new TweenScale(target, target.lossyScale, destination, duration, originActive, destActive, curve); TweenScaleDic.Add(target, tween); return tween; } } public static TweenAudio CreateTweenAudio(Transform target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve) { if (TweenAudioDic.ContainsKey(target)) { TweenAudio tween = TweenAudioDic[target]; tween = new TweenAudio(target.GetComponent(), origin, destination, duration, originActive, destActive, curve); return tween; } else { TweenAudio tween = new TweenAudio(target.GetComponent(), origin, destination, duration, originActive, destActive, curve); TweenAudioDic.Add(target, tween); return tween; } } public static TweenAudio CreateTweenAudio(Transform target, float destination, float duration, bool originActive, bool destActive, Curve curve) { if (TweenAudioDic.ContainsKey(target)) { AudioSource audio = target.GetComponent(); TweenAudio tween = TweenAudioDic[target]; tween = new TweenAudio(audio , audio.volume, destination, duration, originActive, destActive, curve); return tween; } else { AudioSource audio = target.GetComponent(); TweenAudio tween = new TweenAudio(audio, audio.volume, destination, duration, originActive, destActive, curve); TweenAudioDic.Add(target, tween); return tween; } } public static TweenNumber CreateTweenNumber(Transform target, int origin, int destination, float duration, bool originActive, bool destActive, Curve curve) { if (TweenNumberDic.ContainsKey(target)) { TweenNumber tween = TweenNumberDic[target]; tween = new TweenNumber(target.GetComponent(), origin, destination, duration, originActive, destActive, curve); return tween; } else { TweenNumber tween = new TweenNumber(target.GetComponent(), origin, destination, duration, originActive, destActive, curve); TweenNumberDic.Add(target, tween); return tween; } } public static TweenNumber CreateTweenNumber(Transform target, int destination, float duration, bool originActive, bool destActive, Curve curve) { if (TweenNumberDic.ContainsKey(target)) { Text text = target.GetComponent(); TweenNumber tween = TweenNumberDic[target]; tween = new TweenNumber(text, int.Parse(text.text), destination, duration, originActive, destActive, curve); return tween; } else { Text text = target.GetComponent(); TweenNumber tween = new TweenNumber(text, int.Parse(text.text), destination, duration, originActive, destActive, curve); TweenNumberDic.Add(target, tween); return tween; } } #endregion }