yz矢量3到矢量2

本文关键字:矢量 yz | 更新日期: 2023-09-27 17:58:16

简单的问题,在网上找不到答案。

有没有一种简单的方法可以在不创建"新Vector2()"的情况下将Vector3的Y、Z转换为Vector2

类似的东西

Vector3 v = Vector3.one;
Vector2 plan = v.yz;

(所有这些都与Unity3d中的C#有关)Thx

yz矢量3到矢量2

C#有一个非常酷的特性,叫做扩展方法。例如,设置一个VectorExtensions类,并将此代码放入:

public static Vector2 YZ (this Vector3 v) {
    return new Vector2 (v.y, v.z);
}

现在,您可以在项目中的任何地方打电话:

Vector2 v2 = v3.YZ ();

不,如果你想要的话,你不能避免创建一个新的Vector2,因为它与Vector2是不同的对象,它们不能以任何方式相互分配。Kay的扩展方法会为您提供所需的语法,但如果您只是关心在Update循环中分配内存/新对象之类的问题,那么您就没有运气了。

如果您完全控制了Vector3和Vector2类,我想您可以让Vector3继承Vector2并添加x组件;那么就可以将Vector3强制转换为Vector2(将子类视为其父类),并且只使用y&z组件。然而,您可能在一个Unity库中工作,该库将返回自己的Vector3类,无论如何,继承破解无论如何都是一个愚蠢的想法。而且它会迫使你只得到y&z分量;如果你想要z&x、 或者x&y那么,您将再次返回到新的Vector2()。