ios - 如何使用Unity在iOS模拟器中获取物理屏幕尺寸?

标签 ios unity-game-engine ios-simulator

我想根据设备的实际大小在游戏中显示不同数量的元素。不只是缩放输出并在宽度和高度上使用相同的逻辑像素。连续 20 个元素在 iPad 上看起来很大,而连续 30 个元素在 iPhone 上太小了。

我使用 Screen.dpi 以及 Screen.width 和 Screen.height 来计算物理屏幕尺寸。然后我决定小型、中型或大型场景。

但 iOS 模拟器为我提供了 0Screen.dpi。不幸的是,我没有所有可用的 iPad 和 iPhone。它在实体 iPhone 6S+ 和 iPad Air 2 上运行良好。

这是 Unity 中的错误还是模拟器的正常行为?

有没有更好的方法?或者我真的需要为每个现有型号的 iPhone 和 iPad 维护一个设备 DPI 列表吗?

统一 2017.2.0p3; XCode 9.1

最佳答案

如果您阅读 Screen.dpi文档:

This is the actual DPI of the screen attached or physical device running the application. May return 0 if unable to determine the current DPI.

由于模拟器不是物理设备,因此它会返回 0,这是正常行为,因为模拟器缺乏许多其他物理属性。

您可以使用Device. Generation来检测目标设备类型。查看 DeviceGeneration 的可能值并通过检查 dpi for each device 相应地设置您的元素.

您可以创建自己的扩展来获取 dpi,这也适用于模拟器。

希望这有帮助:)

关于ios - 如何使用Unity在iOS模拟器中获取物理屏幕尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47671384/

相关文章:

ios - 应用程序在第二点后卡住,Objective C

iphone - 在 Mac OS X Snow Leopard 上的 iPhone 模拟器上使用 Valgrind

debugging - 等待调试器连接

ios - 为什么 Array 在 Swift 中是 AnyObject?

ios - 如果应用程序仅供我使用,我是否需要将其发送给 Apple?

android - 自动质量设置

unity-game-engine - 求与无限平面相交的射线的长度

pdf - 在 Unity 中打开 pdf 文件

ios - 在静态库中引用 PLCrashReporter 1.2 beta 2 并在客户端中构建时 undefined symbol

ios - 检测 CAShapeLayer 中点击的位置