unity3d 如何更改从内部调用静态实用程序函数的示例?

y53ybaqx  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(119)

我试图编写一个实用函数来更改Vector3的x值,因此我只能编写

transform.position.SetVectorX(newX);

而不是:

Vector3 temp = new Vector3(newx, transform.position.y, transform.position.z);
transform.position = temp;

所以我尝试了这个,但我不明白为什么它不工作:

namespace MyUtility
{
    public static class Extension
    {
        public static Vector3 SetVectorX(this Vector3 v, float x)
        {
            return v = new Vector3(x, v.y, v.z);
        }

    }
}
44u64gxh

44u64gxh1#

你需要考虑更高的层次,你可以为Transform写一个扩展方法来设置它的位置。

public static class Extension
{
    public static void SetPositionX(this Transform t, float x)
    {
        var v = t.Position;
        t.Position = new Vector3(x, v.y, v.z);
    }
}

这样称呼它:

transform.SetPositionX(newX);

至于你最初的想法,参见this question

相关问题