android - 热门决定应该在 unity3d 游戏中选择 xxhdpi、xhdpi、hdpi、mdpi 或 ldpi 的哪个资产包变体,以获得没有像素化的体面 UI?
问题描述
在统一设计UI的同时。如果我直接以不同的分辨率附加单个 mdpi 图像和文本,则图像/精灵会根据屏幕尺寸进行缩放。但问题是当图像被缩放时,它会显示为像素化吗?
所以我阅读了资产包变体,并尝试通过为不同的分辨率制作不同的包来使用它们。(捆绑包有 xxxhdpi、xxhdpi、xhdpi、hdpi、mdpi 和 ldpi)。
但是我被困在如何为我的游戏运行的设备选择资产包变体。如何Screen.dpi
统一使用来实现这一点?
我假设我也可以对 Android(手机和标签)和 IOS(iPhone 和 iPad)设备做同样的事情。
解决方案
表格如下:
- MDPI - 160dpi
- HDPI - 240dpi
- XHDPI - 320dpi
- XXHDPI - 480dpi
- XXXHDPI - 680dpi
所以检查将是:
void Start(){
if(Screen.dpi <= 160){
//change your UI textures for mdpi
}else if(Screen.dpi <= 240){
//change your UI textures for hdpi
}else if(Screen.dpi <= 320){
//change your UI textures for xhdpi
}else if(Screen.dpi <= 480){
//change your UI textures for xxhdpi
}else{
//change your UI textures for xxxhdpi
}
}
编辑:请注意,Unity 可能改变了返回值的形状。如果这不正确,请与它一起玩,看看它会返回什么。另外,请参阅this和this。
推荐阅读
- sockets - 如何从 TCP 套接字服务器读取所有数据并随后执行操作
- c - 如何在 Rust 中正确包装 C 函数指针?
- r - 何运行一个函数(多次)改变全局环境中的变量(tibble)
- python - 如何在带有%的str中包含列表?蟒蛇问题
- gerrit - 在 Gerrit 2.14 中启用头像
- reactjs - 为什么我不能从我的 jsx 中的函数渲染“Hello”?
- youtube-api - YouTube 数据 API - 使用经理帐户将视频上传到 youtube 品牌帐户的频道
- node.js - 在连接池缓存中找不到 poolAlias “default”(将 Express 服务器连接到 Oracle 数据库)
- python - 如何用python建立人口金字塔
- javascript - 谷歌图表不允许我在行创建中使用变量