Unity:将Vector2转换为Vector2Int

时间:2019-02-16 16:57:32

标签: c# unity3d vector

我有一个Vector2,我想将其转换为Vector2Int。我知道我可以用以下方式转换Vector2

Vector2 v2 = new Vector2(10, 10);
Vector2Int v2i;

v2i = new Vector2Int((int) v2.x, (int) v2.y);

但是有没有更短或更有效的方法?例如这样的东西:

v2i = v2.toVector2Int();

4 个答案:

答案 0 :(得分:7)

有一个built-in static method

Vector2 v2 = new Vector2(10, 10);
Vector2Int v2i = Vector2Int.RoundToInt(v2);

您也可以根据需要使用 Vector2.CeilToInt(Vector2 v) 和 Vector2.FloorToInt(Vector2 v)

答案 1 :(得分:4)

您可以使用扩展方法使其更具可读性:

A = np.array([[1,2,3],[2,3,4]])
B = np.array([[2,3],[4,5],[5,6]])

result = matrix_multiply(A,B).T
print (result)

# array([[25., 31.],
#    [36., 45.]])

并像这样使用它:

v = np.array([[4,3,1],[6,7,2]])
g = np.array([[3],[1],[4]])

result = matrix_multiply(v,g)
print (result)
# [[19. 33.]]

答案 2 :(得分:0)

  

但是有没有更短或更有效的方法?

不幸的是,没有更好的解决方案。

请参见Unity3d源代码: Vector2dVector2dInt

只能进行反向转换:

Vector2 v2 = new Vector2();
Vector2Int v2i = new Vector2Int(10, 10);
v2 = (Vector2)v2i;

答案 3 :(得分:0)

您可以使用automapper库,让该库为您完成这项工作。 通话内容如下:

Vector2Int v2i = Mapper.Map<Vector2>(v2);

automapper的优势在于,它是一个非常强大的工具,可以为您隐藏所有这些讨厌的映射逻辑。