有的时候想直接通过transform.position.x=10f;的时候,编译器会报错,必须这样写
transform.position = new Vector3(10f, transform.position.y, transform.position.z);
这样特别的不方便,然而C#3.0新加入一个特性,就是通过this关键字动态的向某个类注入静态函数,比如:
using UnityEngine;
using System.Collections;
public static class ExtraTransform {
public static void SetX(this Transform transform, float x)
{
Vector3 newPosition =
new Vector3(x, transform.position.y, transform.position.z);
transform.position = newPosition;
}
public static void SetY(this Transform transform, float y)
{
Vector3 newPosition =
new Vector3 (transform.position.x, y, transform.position.z);
transform.position = newPosition;
}
public static void SetZ(this Transform transform, float z)
{
Vector3 newPosition =
new Vector3 (transform.position.x, transform.position.y, z);
transform.position = newPosition;
}
public static float GetX(this Transform transform)
{
return transform.position.x;
}
public static float GetY(this Transform transform)
{
return transform.position.y;
}
public static float GetZ(this Transform transform)
{
return transform.position.z;
}
}
所以上面的代码直接写transform.SetX(10f);即可,这样代码写起来更加快捷~~~
提示:静态类不能拓展MonoBehaviour类。