浮点值默认为1或0

时间:2017-01-23 13:34:48

标签: c# unity3d unity5

我正在尝试为Unity中的CellSize制定一些东西。 这适用于GridLayoutGroup组件。我发现用计算器完成的工作完全正常:Screen.Width / 1280,Screen.Height / 720。 由于我使用720p作为基本分辨率,一切看起来很好,我用它作为基础。 100x100在720p上的单元尺寸看起来很棒。

例如,它们的分辨率为1280:1024 它应该出来(100,142)然而它总是出来(1.0,1.0)。 如果分辨率很小......比如320x200就会出现(0.0,0.0)。

这是我的代码:

SlotPanel.GetComponent<GridLayoutGroup>().cellSize = new Vector2((Cam.pixelWidth / 1280) * 100, (Cam.pixelHeight / 720) * 100);

Cam是玩家使用的相机。 我尝试的另一个代码是:

SlotPanel.GetComponenet<GridLayoutGroup>().cellSize = new Vector2((Screen.Width / 1280) * 100, (Screen.Height / 720) * 100);

两者都会导致同样的问题。在这一点上,我对自己的生气感到失望。我不明白为什么数学是正确的,但它不能正常工作。

1 个答案:

答案 0 :(得分:5)

Cam.pixelWidth / 1280&amp; c。在整数算术中进行评估;任何剩余部分都被丢弃。

重写为100.0 * Cam.pixelWidth / 1280以确保评估以浮点(由于两个积分参数的升级)进行。还有其他方法,但我觉得这个方法最清楚,因为更改第一个系数会告诉读者你的代码从一开始你想做什么。

(如果要求表达式的类型为单精度浮点类型,则使用100f代替100.0)。

这是使用多余括号实际上有害的情况之一。

相关问题