在 iPad 上缩放视网膜的 kha-app

Scaling a kha-app for retina on iPad

我有一个 kha 应用程序 运行 完美地显示在 iPad2 (1024/768px) 上。

当我 运行 同一个项目在后来的 iPad Mini 上用 2048/1516。我的坐标都是一半大小,这有点道理。

因此,当我将对象和 GFX 的所有尺寸加倍时,它可以在 iPad mini 上运行,但对于 iPad2 来说太大了。

我查看了一个后备缓冲区和一个 renderTarget,如下所述: https://www.youtube.com/watch?v=OV1PTo5XSCA

khafile中还有windowSize选项,好像什么都没做。

表面 x 和 y 坐标似乎总是出现在设备的实际屏幕坐标中。

编写与分辨率无关的应用程序的最佳方法是什么?

完美的方式是视网膜或非视网膜,具体取决于设备,代码保持不变。

根据 https://github.com/Kode/Kha/wiki/Screen-Size-and-Scaling,某些目标可以自动缩放。如果您需要其他目标,则必须手动缩放所有内容以适合屏幕。

页面提到使用此 class 完成任务:https://github.com/Kode/Kha/blob/master/Sources/kha/Scaler.hx

你也可以看看Wyngine是怎么做的: https://github.com/laxa88/wyngine/search?utf8=%E2%9C%93&q=scale & https://github.com/laxa88/wyngine/blob/master/Wyngine.hx

您(对我的评论)回答说缩放是不够的。到目前为止,对于我所有具有正确显示设置的游戏来说已经足够了,但如果你真的需要视网膜大小的图形,你总是可以选择使用多个图形集。例如:

  • 一组视网膜结果(例如iPad 3)
  • 默认分辨率(例如iPad 2)设置为视网膜尺寸的一半
  • 为廉价 android 设备设置低分辨率?

在您的应用程序启动时,您会检查屏幕尺寸。您可以使用它来选择内部游戏大小和最适合实际屏幕分辨率的图形集。可以通过将图形集比例因子应用于原始基值来计算所选图形集的内部游戏大小以及所有 X/Y 个位置。

最后,您使用 Scale.scale() 将您的游戏从内部游戏大小扩展到适合 iPad pro 12" 等设备和各种 Android 设备。

这种方法在很多游戏引擎中都很常见,google 应该可以找到像 https://v-play.net/doc/vplay-different-screen-sizes/ 这样的链接,其中还解释了屏幕比例以及如何处理这些比例。