我想在游戏中显示不同数量的元素,具体取决于设备的实际大小。不只是缩放输出并使用宽度和高度相同的逻辑像素。连续20个元素在iPad上看起来很大,而且iPhone上连续30个元素太小。
我正在使用Screen.dpi和Screen.width以及Screen.height来计算物理屏幕大小。然后我决定一个小型,中型或大型场景。
但iOS模拟器为Screen.dpi提供了0。不幸的是,我没有所有的iPad和iPhone。它在物理iPhone 6S +和iPad Air 2上运行良好。
这是Unity中的错误还是模拟器的正常行为?
有没有更好的办法?或者我是否真的需要为每个现有的iPhone和iPad型号维护设备DPI列表?
Unity 2017.2.0p3; XCode 9.1
如果您阅读Screen.dpi
文档:
这是运行应用程序的屏幕附加或物理设备的实际DPI。如果无法确定当前DPI,则可能返回0。
由于模拟器不是物理设备,它将返回0并且这是正常行为,因为模拟器缺少许多其他物理属性。
您可以使用Device.generation
来检测目标设备类型。查看DeviceGeneration的可能值,并通过检查dpi for each device相应地设置您的元素。
你可以创建自己的扩展来获得适用于模拟器的dpi。
希望这可以帮助 :)