这有什么问题吗?我在前两行收到错误。
bounds.xMin = (Mathf.FloorToInt (x / GridSize) * GridSize);
bounds.yMin = (Mathf.FloorToInt (y / GridSize) * GridSize);
bounds.xMax = bounds.xMin + GridSize;
bounds.yMax = bounds.yMin + GridSize;
bounds.xMin
、bounds.yMin
、x
、y
和 GridSize
都是 uint
类型。
你所有的变量都是uint
,但是Mathf.FloorToInt
的返回类型是 int
。
要将 uint
乘以 int
,C# 会将两个操作数都转换为 long
,因为它是唯一可以表示所有操作数的整数类型他们可能的值(value)。此操作的结果也将是 long
。
您需要将整个结果或至少是 Mathf.FloorToInt
的结果转换为 uint
。
来自 C# 语言规范:
For the binary +, –, *, /, %, &, ^, |, ==, !=, >, <, >=, and <= operators, the operands are converted to type T, where T is the first of int, uint, long, and ulong that can fully represent all possible values of both operands. The operation is then performed using the precision of type T, and the type of the result is T
我是一名优秀的程序员,十分优秀!