扩展方法,可以在类之外扩展类的方法。
在某些不能修改源码或者引用一些库的情况,可以利用扩展方法为这个类增加一个新方法。
要求:
1. 声明扩展方法的类必须是static静态类;
2. 扩展方法本身必须static静态方法;
3. 扩展方法必须包含关键字this作为第一个参数类型。
比如:
Unity中 "gameObject.GetComponent<Transform>() ; " 可以通过GameObject直接调用Unity定义好的API "GetComponent" ,如果已有API满足不了使用需求,还可以利用This关键字进行扩展。
修改Transform.Position的X值:
public static void SetPositionX(this Transform t, float newX)
{
t.position = new Vector3(newX, t.position.y, t.position.z);
}
修改Vector3的Y值:
public static Vector3 SetY(this Vector3 t, float newY)
{
t.y = newY;
return t;
}
修改Color的透明度:
public static Color SetAlpha(this Color c, float newAlpha)
{
c.a = newAlpha;
return c;
}
这样就可以自己封装一些使用频率高的方法函数,调用更加简洁方便,但这样也会混淆Unity原有函数,需要合理使用~~