XNA 中是否有 Vector3Int 等价物?
Is there Vector3Int equivalentin XNA?
我想知道 XNA 中是否有 Unity 的 Vector3Int
等价物。我不想使用 Vector3 在一个结构中存储三个整数,但我不想创建自己的 class。是否有结构(如 Point<->Vector2 或 Rectangle<->Vector4) 对于 Vector3?
答案是否定的。 Point
是 System.Drawing
的遗留物,Rectangle
有助于 AABB 碰撞。
在浮点数中存储整数(它们消耗相同的内存量)的唯一警告是可能会损失精度,因为浮点数不能精确地存储某些值。在大多数情况下,这不是问题。浮点运算可能比整数运算慢。
我建议创建一个 Vector3Int
结构:
public struct Vector3Int
{
public int X;
public int Y;
public int Z;
public Vector3Int()
{
X = 0;
Y = 0;
Z = 0;
}
public Vector3Int(int val)
{
X = val;
Y = val;
Z = val;
}
public Vector3Int(int x, int y, int z)
{
X = x;
Y = y;
Z = z;
}
}
这具有结构的优点,因为它存储在堆栈中。
我想知道 XNA 中是否有 Unity 的 Vector3Int
等价物。我不想使用 Vector3 在一个结构中存储三个整数,但我不想创建自己的 class。是否有结构(如 Point<->Vector2 或 Rectangle<->Vector4) 对于 Vector3?
答案是否定的。 Point
是 System.Drawing
的遗留物,Rectangle
有助于 AABB 碰撞。
在浮点数中存储整数(它们消耗相同的内存量)的唯一警告是可能会损失精度,因为浮点数不能精确地存储某些值。在大多数情况下,这不是问题。浮点运算可能比整数运算慢。
我建议创建一个 Vector3Int
结构:
public struct Vector3Int
{
public int X;
public int Y;
public int Z;
public Vector3Int()
{
X = 0;
Y = 0;
Z = 0;
}
public Vector3Int(int val)
{
X = val;
Y = val;
Z = val;
}
public Vector3Int(int x, int y, int z)
{
X = x;
Y = y;
Z = z;
}
}
这具有结构的优点,因为它存储在堆栈中。