示例#1
0
        /// <summary>
        /// 动画过度到目标颜色
        /// </summary>
        public static TweenScript TnUguiColor(this RectTransform rectTrans, Color?from, Color to,
                                              float time      = 0.5f,
                                              float delayTime = 0,
                                              bool isChild    = false)
        {
            Color fromTmp = from ?? Color.white;

            if (from == null)
            {
                if (rectTrans.GetComponent <Graphic>() != null)
                {
                    fromTmp = from ?? rectTrans.GetComponent <Graphic>().color;
                }
            }
            TweenScript tweenTmp = StackObjectPool <TweenScript> .GetObject();

            tweenTmp.animGameObject = rectTrans.gameObject;
            tweenTmp.animType       = AnimType.UGUI_Color;
            tweenTmp.fromColor      = fromTmp;
            tweenTmp.toColor        = to;
            tweenTmp.isChild        = isChild;
            tweenTmp.SetDelay(delayTime);
            tweenTmp.totalTime = time;

            tweenTmp.Init();
            TweenUtil.GetInstance().animList.Add(tweenTmp);
            return(tweenTmp);
        }
示例#2
0
        public static TweenScript TnUguiAlpha(this RectTransform rectTrans, float?from, float to,
                                              float time,
                                              float delayTime = 0,
                                              bool isChild    = false)
        {
            float fromTmp = from ?? 1;

            if (from == null)
            {
                if (rectTrans.GetComponent <Graphic>() != null)
                {
                    fromTmp = from ?? rectTrans.GetComponent <Graphic>().color.a;
                }
            }
            TweenScript tweenTmp = StackObjectPool <TweenScript> .GetObject();

            tweenTmp.animGameObject = rectTrans.gameObject;
            tweenTmp.animType       = AnimType.UGUI_Alpha;
            tweenTmp.fromFloat      = fromTmp;
            tweenTmp.toFloat        = to;
            tweenTmp.isChild        = isChild;
            tweenTmp.SetDelay(delayTime);
            tweenTmp.totalTime = time;
            tweenTmp.Init();
            TweenUtil.GetInstance().animList.Add(tweenTmp);
            return(tweenTmp);
        }
示例#3
0
        public static TweenScript TnRotate(this Transform trans, Vector3?from, Vector3 to,
                                           float time      = 0.5f,
                                           float delayTime = 0,
                                           bool isLocal    = true)
        {
            AnimType animType;
            Vector3  fromTmp;

            if (isLocal)
            {
                fromTmp  = from ?? trans.localEulerAngles;
                animType = AnimType.LocalRotate;
            }
            else
            {
                fromTmp  = from ?? trans.eulerAngles;
                animType = AnimType.Rotate;
            }
            TweenScript tweenTmp = StackObjectPool <TweenScript> .GetObject();

            tweenTmp.animGameObject = trans.gameObject;
            tweenTmp.animType       = animType;
            tweenTmp.fromV3         = fromTmp;
            tweenTmp.toV3           = to;
            tweenTmp.isLocal        = isLocal;
            tweenTmp.SetDelay(delayTime);
            tweenTmp.totalTime = time;

            tweenTmp.Init();
            TweenUtil.GetInstance().animList.Add(tweenTmp);
            return(tweenTmp);
        }
示例#4
0
 public static void FinishAnim(TweenScript tweenData)
 {
     tweenData.currentTime = tweenData.totalTime;
     tweenData.executeUpdate();
     tweenData.executeCallBack();
     GetInstance().animList.Remove(tweenData);
     StackObjectPool <TweenScript> .PutObject(tweenData);
 }
示例#5
0
 /*
  * public static TweenScript ValueTo(AnimParamHash l_animHash)
  * {
  *  TweenScript l_tmp = l_animHash.GetAnimData();
  *  l_tmp.Init();
  *  GetInstance().animList.Add(l_tmp);
  *  return l_tmp;
  * }
  * public class AnimParamHash : Dictionary<AnimParamType, object>
  * {
  *  public AnimParamHash(params object[] l_params)
  *  {
  *      for (int i = 0; i < l_params.Length; i += 2)
  *      {
  *          this[(AnimParamType)l_params[i]] = l_params[i + 1];
  *      }
  *  }
  *  public AnimParamHash SetData(params object[] l_params)
  *  {
  *      Clear();
  *      for (int i = 0; i < l_params.Length; i += 2)
  *      {
  *          this[(AnimParamType)l_params[i]] = l_params[i + 1];
  *      }
  *      return this;
  *  }
  *  public TweenScript GetAnimData()
  *  {
  *      TweenScript DataTmp = StackObjectPool<TweenScript>.GetObject();
  *      foreach (var hash in this)
  *      {
  *          AnimParamType l_ParamType = hash.Key;
  *          switch (l_ParamType)
  *          {
  *              //基础参数
  *              case AnimParamType.GameObj:
  *                  DataTmp.animGameObject = (GameObject)hash.Value;
  *                  break;
  *              case AnimParamType.AnimType:
  *                  DataTmp.animType = (AnimType)hash.Value;
  *                  break;
  *              case AnimParamType.Time:
  *                  DataTmp.totalTime = (float)hash.Value;
  *                  break;
  *              case AnimParamType.InteType:
  *                  DataTmp.m_easeType = (Ease)hash.Value;
  *                  break;
  *              case AnimParamType.RepeatType:
  *                  DataTmp.repeatType = (RepeatType)hash.Value;
  *                  break;
  *              case AnimParamType.RepeatCount:
  *                  DataTmp.repeatCount = (int)hash.Value;
  *                  break;
  *              case AnimParamType.DelayTime:
  *                  DataTmp.delayTime = (float)hash.Value;
  *                  break;
  *              //From
  *              case AnimParamType.FromV3:
  *                  DataTmp.fromV3 = (Vector3)hash.Value;
  *                  break;
  *              case AnimParamType.FromV2:
  *                  DataTmp.fromV2 = (Vector2)hash.Value;
  *                  break;
  *              case AnimParamType.FromColor:
  *                  DataTmp.fromColor = (Color)hash.Value;
  *                  break;
  *              case AnimParamType.FromFloat:
  *                  DataTmp.fromFloat = (float)hash.Value;
  *                  break;
  *              //To
  *              case AnimParamType.ToV3:
  *                  DataTmp.toV3 = (Vector3)hash.Value;
  *                  break;
  *              case AnimParamType.ToV2:
  *                  DataTmp.toV2 = (Vector2)hash.Value;
  *                  break;
  *              case AnimParamType.ToColor:
  *                  DataTmp.toColor = (Color)hash.Value;
  *                  break;
  *              case AnimParamType.ToFloat:
  *                  DataTmp.toFloat = (float)hash.Value;
  *                  break;
  *              //动画回调
  *              case AnimParamType.CallBack:
  *                  DataTmp.animCallBack = (AnimCallBack)hash.Value;
  *                  break;
  *              case AnimParamType.CallBackParams:
  *                  DataTmp.animParameter = (object[])hash.Value;
  *                  break;
  *              //定制函数
  *              case AnimParamType.CustomMethodV3:
  *                  DataTmp.customMethodV3 = (AnimCustomMethodVector3)hash.Value;
  *                  break;
  *              case AnimParamType.CustomMethodV2:
  *                  DataTmp.customMethodV2 = (AnimCustomMethodVector2)hash.Value;
  *                  break;
  *              case AnimParamType.CustomMethodFloat:
  *                  DataTmp.customMethodFloat = (AnimCustomMethodFloat)hash.Value;
  *                  break;
  *              //闪烁
  *              case AnimParamType.Space:
  *                  DataTmp.blinkTime = (float)hash.Value;
  *                  break;
  *              //路径运动
  *              case AnimParamType.PathType:
  *                  DataTmp.m_pathType = (PathType)hash.Value;
  *                  break;
  *              case AnimParamType.PathData:
  *                  DataTmp.pathPoints = (Vector3[])hash.Value;
  *                  break;
  *              //其他设置
  *              case AnimParamType.IsIncludeChild:
  *                  DataTmp.isChild = (bool)hash.Value;
  *                  break;
  *              case AnimParamType.IsLocal:
  *                  DataTmp.isLocal = (bool)hash.Value;
  *                  break;
  *              case AnimParamType.IsIgnoreTimeScale:
  *                  DataTmp.isIgnoreTimeScale = (bool)hash.Value;
  *                  break;
  *          }
  *      }
  *      return DataTmp;
  *  }
  * }
  */
 #endregion
 #region 功能函数
 /// <summary>
 /// 停止一个动画
 /// </summary>
 /// <param name="animGameObject">要停止的动画</param>
 /// <param name="isCallBack">是否触发回调</param>
 public static void StopAnim(TweenScript tweenData, bool isCallBack = false)
 {
     if (isCallBack)
     {
         tweenData.executeCallBack();
     }
     GetInstance().animList.Remove(tweenData);
     StackObjectPool <TweenScript> .PutObject(tweenData);
 }
示例#6
0
        /// <summary>
        /// 动画移动到某位置
        /// </summary>
        /// <returns></returns>
        public static TweenScript TnLocalMove(this Transform trans, Vector3 to, float time = 0.5f,
                                              float delayTime = 0)
        {
            TweenScript tweenTmp = StackObjectPool <TweenScript> .Get();

            tweenTmp.SetValue(trans.localPosition, to);
            tweenTmp.isLocal = true;
            tweenTmp.Init(trans.gameObject, AnimType.Position, time, delayTime);
            TweenUtil.GetInstance().AddTween(tweenTmp);
            return(tweenTmp);
        }
示例#7
0
        public static TweenScript TnAlphaTo(this Transform trans, float from, float to,
                                            float time      = 0.5f,
                                            float delayTime = 0)
        {
            TweenScript tweenTmp = StackObjectPool <TweenScript> .Get();

            tweenTmp.SetValue(from, to);
            tweenTmp.Init(trans.gameObject, AnimType.Alpha, time, delayTime);
            TweenUtil.GetInstance().AddTween(tweenTmp);
            return(tweenTmp);
        }
示例#8
0
        /// <summary>
        /// 隐藏/显示
        /// </summary>
        public static TweenScript TnBlink(this Transform trans, float space,
                                          float time      = 0.5f,
                                          float delayTime = 0)
        {
            TweenScript tweenTmp = StackObjectPool <TweenScript> .Get();

            tweenTmp.blinkTime = space;

            tweenTmp.Init(trans.gameObject, AnimType.Blink, time, delayTime);
            TweenUtil.GetInstance().AddTween(tweenTmp);
            return(tweenTmp);
        }
示例#9
0
        /// <summary>
        /// UGUI RectTransfrom 放大缩小
        /// width/height
        /// </summary>
        public static TweenScript TnUiSize(this RectTransform rectTrans, Vector2 to,
                                           float time      = 0.5f,
                                           float delayTime = 0)
        {
            Vector2     fromTmp  = rectTrans.sizeDelta;
            TweenScript tweenTmp = StackObjectPool <TweenScript> .Get();

            tweenTmp.SetValue(fromTmp, to);
            tweenTmp.Init(rectTrans.gameObject, AnimType.UiSize, time, delayTime);
            TweenUtil.GetInstance().AddTween(tweenTmp);
            return(tweenTmp);
        }
示例#10
0
        /// <summary>
        /// UGUI Move RectTransform .anchoredPosition3D
        /// </summary>
        public static TweenScript TnAnchoredPosition(this RectTransform rectTrans, Vector3 to,
                                                     float time      = 0.5f,
                                                     float delayTime = 0)
        {
            TweenScript tweenTmp = StackObjectPool <TweenScript> .Get();

            tweenTmp.SetValue(rectTrans.anchoredPosition3D, to);

            tweenTmp.Init(rectTrans.gameObject, AnimType.UiAnchoredPosition, time, delayTime);
            TweenUtil.GetInstance().AddTween(tweenTmp);
            return(tweenTmp);
        }
示例#11
0
        public static TweenScript TnRotate(this Transform trans, Vector3 to,
                                           float time      = 0.5f,
                                           float delayTime = 0,
                                           bool isLocal    = true)
        {
            TweenScript tweenTmp = StackObjectPool <TweenScript> .Get();

            tweenTmp.SetValue(isLocal ? trans.localEulerAngles : trans.eulerAngles, to);
            tweenTmp.isLocal = isLocal;
            tweenTmp.Init(trans.gameObject, AnimType.Rotate, time, delayTime);
            TweenUtil.GetInstance().AddTween(tweenTmp);
            return(tweenTmp);
        }
示例#12
0
        public void AddTween(TweenScript tweenScript)
        {
            // 避免同一物体同一类型同时存在两次.
            var a = animList.Find(x =>
                                  x.AnimObject == tweenScript.AnimObject && x.AnimType == tweenScript.AnimType);

            if (a != null)
            {
                animList.Remove(a);
                StackObjectPool <TweenScript> .Push(a);
            }

            animList.Add(tweenScript);
        }
示例#13
0
        public static TweenScript TnPathMove(this Transform trans, Vector3[] path,
                                             float time        = 2,
                                             float delayTime   = 0,
                                             bool isLocal      = false,
                                             PathType pathType = PathType.CatmullRom)
        {
            TweenScript tweenTmp = StackObjectPool <TweenScript> .Get();

            if (pathType == PathType.Line)
            {
                pathType = PathType.CatmullRom;
            }

            Vector3 fromV3;

            if (isLocal)
            {
                fromV3 = trans.transform.localPosition;
            }
            else
            {
                fromV3 = trans.transform.position;
            }

            if (path.Length < 2)
            {
                pathType = PathType.Line; //小于1个点。
                Debug.LogError("Path point it's too short ");
            }
            else
            {
                Vector3[] realPath = new Vector3[path.Length + 1];
                realPath[0] = fromV3;
                for (int i = 0; i < path.Length; i++)
                {
                    realPath[i + 1] = path[i];
                }

                tweenTmp.pathNodes = realPath;
            }

            tweenTmp.isLocal  = isLocal;
            tweenTmp.pathType = pathType;

            tweenTmp.Init(trans.gameObject, AnimType.Position, time, delayTime);
            TweenUtil.GetInstance().AddTween(tweenTmp);
            return(tweenTmp);
        }
示例#14
0
        /// <summary>
        /// 隐藏/显示
        /// </summary>
        public static TweenScript TnBlink(this Transform trans, float space,
                                          float time      = 0.5f,
                                          float delayTime = 0)
        {
            TweenScript tweenTmp = StackObjectPool <TweenScript> .GetObject();

            tweenTmp.animType       = AnimType.Blink;
            tweenTmp.animGameObject = trans.gameObject;
            tweenTmp.blinkTime      = space;
            tweenTmp.SetDelay(delayTime);
            tweenTmp.totalTime = time;

            tweenTmp.Init();
            TweenUtil.GetInstance().animList.Add(tweenTmp);
            return(tweenTmp);
        }
示例#15
0
        public static TweenScript CustomTweenFloat(UnityAction <float> method, float from, float to,
                                                   float time          = 0.5f,
                                                   float delayTime     = 0,
                                                   LoopType repeatType = LoopType.Once,
                                                   int repeatCount     = -1)
        {
            TweenScript tweenTmp = StackObjectPool <TweenScript> .Get();

            tweenTmp.SetValue(from, to);
            tweenTmp.customMethodFloat = new AnimCustomMethodFloat();
            tweenTmp.customMethodFloat.AddListener(method);
            tweenTmp.SetLoopType(repeatType, repeatCount);
            tweenTmp.Init(null, AnimType.CustomFloat, time, delayTime);
            GetInstance().animList.Add(tweenTmp);
            return(tweenTmp);
        }
示例#16
0
        public static TweenScript TnPathMove(this Transform trans, Vector3?from, Vector3[] path,
                                             float time        = 2,
                                             float delayTime   = 0,
                                             bool isLocal      = false,
                                             PathType pathType = PathType.PathLinear)
        {
            TweenScript tweenTmp = StackObjectPool <TweenScript> .GetObject();

            if (pathType == PathType.Line)
            {
                pathType = PathType.PathLinear;
            }
            if (isLocal)
            {
                tweenTmp.animType = AnimType.LocalPosition; // 动画类型
                tweenTmp.fromV3   = from ?? trans.transform.localPosition;
            }
            else
            {
                tweenTmp.animType = AnimType.Position;
                tweenTmp.fromV3   = from ?? trans.transform.position;
            }
            if (path.Length < 2)
            {
                pathType = PathType.Line; //小于1个点。
                Debug.LogError("Path point it's too short ");
            }
            else
            {
                Vector3[] realPath = new Vector3[path.Length + 1];
                realPath[0] = tweenTmp.fromV3;
                for (int i = 0; i < path.Length; i++)
                {
                    realPath[i + 1] = path[i];
                }
                tweenTmp.pathPoints = realPath;
            }
            tweenTmp.animGameObject = trans.gameObject;
            tweenTmp.isLocal        = isLocal;
            tweenTmp.pathType       = pathType;
            tweenTmp.SetDelay(delayTime);
            tweenTmp.totalTime = time;

            tweenTmp.Init();
            TweenUtil.GetInstance().animList.Add(tweenTmp);
            return(tweenTmp);
        }
示例#17
0
        /// <summary>
        /// 动画移动到某位置
        /// </summary>
        /// <returns></returns>
        public static TweenScript TnLocalMove(this Transform trans, Vector3?from, Vector3 to, float time = 0.5f,
                                              float delayTime = 0)
        {
            TweenScript tweenTmp = StackObjectPool <TweenScript> .GetObject();

            tweenTmp.isLocal        = true;
            tweenTmp.animGameObject = trans.gameObject;
            tweenTmp.animType       = AnimType.LocalPosition;
            tweenTmp.fromV3         = from ?? trans.localPosition;
            tweenTmp.toV3           = to;
            tweenTmp.SetDelay(delayTime);
            tweenTmp.totalTime = time;

            tweenTmp.Init();
            TweenUtil.GetInstance().animList.Add(tweenTmp);
            return(tweenTmp);
        }
示例#18
0
 /// <summary>
 /// 停止一个对象身上的所有动画
 /// </summary>
 /// <param name="trans">要停止动画的对象</param>
 /// <param name="isCallBack">是否触发回调</param>
 public static void TnStop(this Transform trans, bool isCallBack = false)
 {
     for (int i = 0; i < TweenUtil.GetInstance().animList.Count; i++)
     {
         if (TweenUtil.GetInstance().animList[i].animGameObject == trans.gameObject)
         {
             if (isCallBack)
             {
                 TweenScript dataTmp = TweenUtil.GetInstance().animList[i];
                 dataTmp.executeCallBack();
             }
             TweenScript tweenData = TweenUtil.GetInstance().animList[i];
             TweenUtil.GetInstance().animList.RemoveAt(i);
             i--;
             StackObjectPool <TweenScript> .PutObject(tweenData);
         }
     }
 }
示例#19
0
        /// <summary>
        /// UGUI RectTransfrom 放大缩小
        /// width/height
        /// </summary>
        public static TweenScript TnUguiSize(this RectTransform rectTrans, Vector2?from, Vector2 to,
                                             float time      = 0.5f,
                                             float delayTime = 0)
        {
            Vector2     fromTmp  = from ?? rectTrans.GetComponent <RectTransform>().sizeDelta;
            TweenScript tweenTmp = StackObjectPool <TweenScript> .GetObject();

            tweenTmp.animGameObject = rectTrans.gameObject;
            tweenTmp.animType       = AnimType.UGUI_Size;
            tweenTmp.fromV2         = fromTmp;
            tweenTmp.toV2           = to;
            tweenTmp.SetDelay(delayTime);
            tweenTmp.totalTime = time;

            tweenTmp.Init();
            TweenUtil.GetInstance().animList.Add(tweenTmp);
            return(tweenTmp);
        }
示例#20
0
        public static TweenScript TnUguiRotate(this RectTransform rectTrans, Vector3 to,
                                               float time      = 0.5f,
                                               float delayTime = 0)
        {
            Vector3     fromTmp  = rectTrans.GetComponent <RectTransform>().eulerAngles;
            TweenScript tweenTmp = StackObjectPool <TweenScript> .GetObject();

            tweenTmp.animGameObject = rectTrans.gameObject;
            tweenTmp.animType       = AnimType.UGUI_AnchoredRotate;
            tweenTmp.fromV3         = fromTmp;
            tweenTmp.toV3           = to;
            tweenTmp.SetDelay(delayTime);
            tweenTmp.totalTime = time;

            tweenTmp.Init();
            TweenUtil.GetInstance().animList.Add(tweenTmp);
            return(tweenTmp);
        }
示例#21
0
 public void Update()
 {
     for (int i = 0; i < animList.Count; i++)
     {
         animList[i].executeUpdate();
         if (animList[i].isDone == true)
         {
             TweenScript tweenTmp = animList[i];
             if (!tweenTmp.AnimReplayLogic())
             {
                 animList.Remove(tweenTmp);
                 i--;
                 StackObjectPool <TweenScript> .PutObject(tweenTmp);
             }
             tweenTmp.executeCallBack();
         }
     }
 }
示例#22
0
        public static TweenScript TnAlphaTo(GameObject animObject, float from, float to,
                                            float time      = 0.5f,
                                            float delayTime = 0,
                                            bool isChild    = false)
        {
            TweenScript tweenTmp = StackObjectPool <TweenScript> .GetObject();

            tweenTmp.animGameObject = animObject;
            tweenTmp.animType       = AnimType.Alpha;
            tweenTmp.fromFloat      = from;
            tweenTmp.toFloat        = to;
            tweenTmp.isChild        = isChild;
            tweenTmp.SetDelay(delayTime);
            tweenTmp.totalTime = time;

            tweenTmp.Init();
            TweenUtil.GetInstance().animList.Add(tweenTmp);
            return(tweenTmp);
        }
示例#23
0
        public static TweenScript CustomTweenVector3(UnityAction <Vector3> method, Vector3 from, Vector3 to,
                                                     float time          = 0.5f,
                                                     float delayTime     = 0,
                                                     LoopType repeatType = LoopType.Once,
                                                     int repeatCount     = -1)
        {
            TweenScript tweenTmp = StackObjectPool <TweenScript> .Get();

            tweenTmp.SetValue(from, to);
            tweenTmp.customMethodV3 = new AnimCustomMethodVector3();
            if (method != null)
            {
                tweenTmp.customMethodV3.AddListener(method);
            }
            tweenTmp.SetLoopType(repeatType, repeatCount);
            tweenTmp.Init(null, AnimType.CustomVector3, time, delayTime);
            GetInstance().animList.Add(tweenTmp);
            return(tweenTmp);
        }
示例#24
0
        public static TweenScript TnColorTo(this Transform trans, Color from, Color to,
                                            float time      = 0.5f,
                                            float delayTime = 0,
                                            bool isChild    = false)
        {
            TweenScript tweenTmp = StackObjectPool <TweenScript> .GetObject();

            tweenTmp.animGameObject = trans.gameObject;
            tweenTmp.animType       = AnimType.Color;
            tweenTmp.fromColor      = from;
            tweenTmp.toColor        = to;
            tweenTmp.isChild        = isChild;
            tweenTmp.SetDelay(delayTime);
            tweenTmp.totalTime = time;

            tweenTmp.Init();
            TweenUtil.GetInstance().animList.Add(tweenTmp);
            return(tweenTmp);
        }
示例#25
0
        public static TweenScript CustomTweenVector3(AnimCustomMethodVector3 method, Vector3 from, Vector3 to,
                                                     float time             = 0.5f,
                                                     float delayTime        = 0,
                                                     bool IsIgnoreTimeScale = false,
                                                     LoopType repeatType    = LoopType.Once,
                                                     int repeatCount        = -1)
        {
            TweenScript tweenTmp = StackObjectPool <TweenScript> .GetObject();

            tweenTmp.animType       = AnimType.Custom_Vector3;
            tweenTmp.fromV3         = from;
            tweenTmp.toV2           = to;
            tweenTmp.customMethodV3 = method;
            tweenTmp.SetDelay(delayTime);
            tweenTmp.totalTime = time;
            tweenTmp.SetLoopType(repeatType, repeatCount);
            // l_tmp.isIgnoreTimeScale = IsIgnoreTimeScale;
            tweenTmp.Init();
            GetInstance().animList.Add(tweenTmp);
            return(tweenTmp);
        }