Unity3D 学习笔记 —— Tween对象的实现与动作管理
这周的作业我选择做Tween的实现, 一方面觉得挺好玩的(可以拓展原有系统类的方法, 想想就激动。 相当于可以把自己写的一些方法像库一样使用)。另一方面觉得的确有用, 而不是像GUI那样全程看教程或者文档跟着做就完事了(没有贬低的意思)
1. 预备知识
a. C#的拓展方法
C#的拓展方法, 就是提供了一种让我们可以为原有类添加新方法的功能。一个声明拓展方法的Demo如下:
public static class extend_method_test{
//This is Extened Method, The first parameter beging with (this Type name, args)
public static bool NextBool(this System.Random random)
{
return random.NextDouble() > 0.5;
}
}
public class NewBehaviourScript : MonoBehaviour {
// Use this for initialization
void Start () {
System.Random rand = new System.Random();
print (rand.NextBool ());
}
// Update is called once per frame
void Update () {
}
}
主要注意以下几点:
1. 拓展方法要放在一个public static class
里面
2. 拓展方法本身应该是静态的, 即包含 static
修饰。
3. 拓展方法参数第一位代表要拓展的对象, 记得一定要用this
修饰之。
4. 拓展方法后面的参数, 代表使用时需要传递的参数。
b. C#协程的使用
教程在这里: http://www.cnblogs.com/vivid-stanley/p/5272736.html
使用协程可以让程序实现类似多线程的效果。
c. 对Tween的了解。
这里当然要上DOTween 的官网:http://dotween.demigiant.com/documentation.php
还有很多,不可能一一实现,挑其中几个就好了。
2. 实现过程
a. 拓展方法的添加。
既然是说拓展方法, 那么先来两个简单的例子:
public static Vector3 GetRGB(this Color color) {
return new Vector3 (color.r, color.g, color.b);
}
public static Color ToColor(this Vector3 vec3) {
return new Color (vec3.x, vec3.y, vec3.z);
}
这两个方法分别拓展了 Color 和 Vector3 类, 相当于实现了从Vector3和Color的相互转化(取RGB值),这里在
实现 DoColor()
方法时会用到。
然后是实现动作的拓展方法, 以DoMove()
方法的代码为例子(其他的差不多)
public static tween