using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class UIAnimationController{
public static void CloseSlideOut(UIAnimationParam param)
{
if (param == null)
{
return;
}
if (string.IsNullOrEmpty(param._EaseType))
{
Hashtable table = iTween.Hash();
table.Add("position", param._Pos);
table.Add("time", param._Time);
table.Add("islocal", true);
table.Add("oncompletetarget", param._Target);
if(string.IsNullOrEmpty(param._Del) == false)
{
table.Add("oncomplete", param._Del);
}
iTween.MoveTo(param._Target, table);
}
else
{
Hashtable table = iTween.Hash();
table.Add("position", param._Pos);
table.Add("time", param._Time);
table.Add("islocal", true);
table.Add("oncompletetarget", param._Target);
if(string.IsNullOrEmpty(param._Del) == false)
{
table.Add("oncomplete", param._Del);
}
if(string.IsNullOrEmpty(param._EaseType) == false)
{
table.Add("easetype", param._EaseType);
}
iTween.MoveTo(param._Target, table);
}
}
public static void TweenAlphaFromTo(UIAnimationParam param, EventDelegate.Callback del)
{
if(param == null)
{
return;
}
TweenAlpha tween = TweenAlpha.Begin(param._Target, param._Time, param._AlphaTo);
tween.from = param._AlphaFrom;
if(del != null)
{
EventDelegate.Add(tween.onFinished, del, true);
}
}
public static void ScaleFrom(UIAnimationParam param)
{
if(param == null)
{
return;
}
param._Target.transform.localScale = Vector3.one;
Hashtable table = iTween.Hash();
table.Add("scale", new Vector3(param._ScaleFrom, param._ScaleFrom, param._ScaleFrom));
table.Add("time", param._Time);
table.Add("islocal", true);
table.Add("oncompletetarget", param._Target);
if(string.IsNullOrEmpty(param._Del) == false)
{
table.Add("oncomplete", param._Del);
}
if(string.IsNullOrEmpty(param._EaseType) == false)
{
table.Add("easetype", param._EaseType);
}
iTween.ScaleFrom(param._Target, table);
}
public static void ScaleTo(UIAnimationParam param)
{
if(param == null)
{
return;
}
param._Target.transform.localScale = Vector3.one;
Hashtable table = iTween.Hash();
table.Add("scale", new Vector3(param._ScaleTo, param._ScaleTo, param._ScaleTo));
table.Add("time", param._Time);
table.Add("islocal", true);
table.Add("oncompletetarget", param._Target);
if(string.IsNullOrEmpty(param._Del) == false)
{
table.Add("oncomplete", param._Del);
}
if(string.IsNullOrEmpty(param._EaseType) == false)
{
table.Add("easetype", param._EaseType);
}
iTween.ScaleTo(param._Target, table);
}
}
public class UIAnimationParam
{
public GameObject _Target;
public Vector3 _Pos;
public float _Time;
public string _Del;
public string _EaseType;
public float _AlphaFrom;
public float _AlphaTo;
public float _ScaleFrom;
public float _ScaleTo;
}
public static class UIAnimationPlayer
{
public static void PlayEazyScaleOpen(GameObject go)
{
UIAnimationParam param = new UIAnimationParam();
param._ScaleFrom = 0.5f;
param._Time = 0.5f;
param._Target = go;
param._EaseType = "easeOutBack";
UIAnimationController.ScaleFrom(param);
}
public static void PlayEazyScaleClose(GameObject go)
{
UIAnimationParam param = new UIAnimationParam();
param._ScaleTo = 0.3f;
param._Time = 0.2f;
param._Target = go;
param._Del = "CloseSelf";
param._EaseType = "linear";
UIAnimationController.ScaleTo(param);
}
public static void PlayEazyAlphaOpen(GameObject go, EventDelegate.Callback del)
{
UIAnimationParam param = new UIAnimationParam();
param._Time = 0.3f;
param._AlphaFrom = 0f;
param._AlphaTo = 1f;
param._Target = go;
UIAnimationController.TweenAlphaFromTo(param, del);
}
public static void PlayEazyAlphaClose(GameObject go, EventDelegate.Callback del)
{
UIAnimationParam param = new UIAnimationParam();
param._Time = 0.2f;
param._AlphaFrom = 1f;
param._AlphaTo = 0f;
param._Target = go;
UIAnimationController.TweenAlphaFromTo(param, del);
}
}
ITween动画
本文介绍了如何在Unity3D中利用ITween库实现UI元素的滑动关闭、透明度变化和缩放动画效果。通过UIAnimationController类的静态方法,如CloseSlideOut、TweenAlphaFromTo和ScaleFrom/ScaleTo,可以轻松控制UI组件的动画行为,同时支持自定义缓动类型、时间和回调函数。
摘要由CSDN通过智能技术生成