这有什么不对吗?我在前两行收到了错误。
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
类型。
答案 0 :(得分:4)
您的所有变量均为uint
,但Mathf.FloorToInt
的返回类型为int
。
要将uint
乘以int
,C#会将两个操作数转换为long
,因为它是唯一可以表示所有可能值的整数类型。此操作的结果也将是long
。
您需要将整个结果或至少Mathf.FloorToInt
的结果投放到uint
。
来自C#语言规范:
对于二进制+, - ,*,/,%,&,^,|,==,!=,>,<,> =和< =运算符,操作数将转换为type T,其中T是int,uint,long和ulong中的第一个,它们可以完全表示两个操作数的所有可能值。然后使用类型T的精度执行操作,并且结果的类型是T