Swift 漂浮的精灵

Swift 漂浮的精灵,swift,floating-point,sprite-kit,Swift,Floating Point,Sprite Kit,为什么SpriteKit使用浮动作为位置,即使像素中不能有小数点 我正在用SpriteKit构建一个游戏,我想知道是否应该在ints中设置角色位置以优化它,但不确定是否会有任何性能改进 是否值得将字符位置转换为整数以进行优化?通常,在处理位旋转级别以上的图形时,使用浮点比使用整数更简单。请注意,核心图形也使用浮点数作为坐标 它更简单的原因是,您需要进行缩放(通过非整数因子)和旋转坐标、图像、路径等操作。如果使用整数,舍入误差会迅速累积。如果使用浮点数,舍入误差需要更长的时间才能变得明显-通常它们

为什么SpriteKit使用浮动作为位置,即使像素中不能有小数点

我正在用SpriteKit构建一个游戏,我想知道是否应该在ints中设置角色位置以优化它,但不确定是否会有任何性能改进


是否值得将字符位置转换为整数以进行优化?

通常,在处理位旋转级别以上的图形时,使用浮点比使用整数更简单。请注意,核心图形也使用浮点数作为坐标

它更简单的原因是,您需要进行缩放(通过非整数因子)和旋转坐标、图像、路径等操作。如果使用整数,舍入误差会迅速累积。如果使用浮点数,舍入误差需要更长的时间才能变得明显-通常它们根本不明显

也考虑一个<代码> SKNode <代码>有<代码> xSCAS/<代码>和<代码> yStase< /Cord>属性。如果放大节点,其子节点位置的小数部分会对其在屏幕上的位置产生很大影响


不应将角色位置转换为整数。SpriteKit使用浮点数,因此您最终会将它们转换回浮点数以与SpriteKit一起使用,CPU支持浮点运算,GPU设计用于执行大量浮点运算。

SpriteKit使用浮点数,因为浮点数没有那么大,你将要使用的数字也不会那么大,因为iPad本身的最大尺寸是2048到1536,当浮点数适合这些尺寸时,没有必要将它们声明为整数

转换为整数是没有用的。我已经在SpriteKit中制作了一个游戏,使用CGfloat可以很好地工作


如果您转换为整数,请注意,几乎任何处理精灵图像或对象大小的操作都将以浮点形式进行。

其他答案很好,但请记住,您不是以像素为单位工作的:您是以点为单位工作的。根据设备的不同,点将容纳更多或更少的像素。这背后的原因是为了适应具有节省物理尺寸的视网膜显示器。你使用点,当你添加像素时,每一个点的像素数都增加了,但屏幕上的点数保持不变。谁说整数比浮点快?自90年代末以来,浮点运算在性能方面一直(几乎)处于同一水平。只有在集成FPU处理器出现之前,浮点运算的速度才非常慢。这里没有像素,只有点。在视网膜上显示一个点可以是多个像素,因此即使是分数点也应该考虑。另外,IOS可以在点上工作,而不是在像素上,一个点可以容纳多个像素。因此,根据设备的不同,一个像素将小于1。