Unity iTween精通:解析iTween源代码

在介绍基本动画方法之前我们先来了解下哈希表里面共同键的意义。
变量 类型 描述
time System.Single 动作完成一次所需的时间
path Transform[] 运动路径,一般是若干个GameObject
delay System.Single 动画开始前的延时时间
easetype System.String 运动轨迹的类型
looptype LoopType 循环类型
onstart System.String 当动画开始时要调用的方法
onstarttarget GameObject 一个持有onstart方法的对象
onstartparams System.Object onstart方法的参数
onupdate System.String 动画播放的每一帧调用的方法
onupdatetarget GameObject 挂载onupdate方法的对象
onupdateparams System.Object onupdate方法的参数
oncomplete System.String 动画完成时要调用的方法
oncompletetarget GameObject 挂载oncomplete方法的对象
oncompleteparams System.Object oncomplete方法的参数

以上这些参数是大多数有哈希表形参动画方法的基本键值,还有些键值不用方法有不同的支持,我们在具体方法中探讨。
接下来介绍基本动画方法:
Move
iTween关于物体移动的函数有MoveTo()、MoveFrom()、MoveAdd()、MoveBy(),分别表示“将物体移动至目标位置”、“将物体从目标位置移动至开始位置”等。那么MoveBy和MoveAdd有什么区别呢?通过阅读源代码我们发现没区别。源代码是这样定义的:

case "move":
switch (method) {
    case "to":
    //using a path?
    if(tweenArguments.Contains("path")){
        GenerateMoveToPathTargets();
        apply = new ApplyTween(ApplyMoveToPathTargets);
    }else{ //not using a path?
        GenerateMoveToTargets();
        apply = new ApplyTween(ApplyMoveToTargets);
    }
    break;
    case "by":
    case "add":
        GenerateMoveByTargets();
        apply = new ApplyTween(ApplyMoveByTargets);
    break;
}
break;

我们可以看到,iTween对MoveBy和MoveAdd的操作是一样的。但是在其他基本动画中,对XXBy和对XXAdd有不同的实现。比如ScaleAdd和ScaleBy有不同的动画效果。

为了深入了解 iTween,我们接下来介绍封装在iTween和这些基本动画方法有关的其他方法。

  • Resume
    public static void Resume(GameObject target)
    激活target的所有iTween组件,即设置target.GetComponents< iTween >()中的每一个元素的enabled值为true。

  • CleanArgs
    static Hashtable CleanArgs(Hashtable args)
    将args中Key全部转换为小写,Value中System.Int32和转换为float,最后将转换结果保存到一个新的Hashtable中并返回。

  • Launch
    static void Launch(GameObject target, Hashtable args)
    将args添加到tweens(List类型,保存所有args)头位置,给target添加iTween组件。

猜你喜欢

转载自blog.csdn.net/renkai0406/article/details/79444540