【厚积薄发】如何解决部分设备分辨率不适配

文摘   2024-07-22 18:30   上海  
这是第396篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com

UWA QQ群:793972859


本期目录:
  • 如何解决部分设备分辨率不适配

  • Unity中如何实现草的LOD

  • 使用了Play Asset Delivery提交版本被Google报错

  • 如何计算弧线弹道的落地位置


Platform

Q:我们在云测的时候遇到了一个适配问题:部分机子跑游戏会降分辨率,导致Unity API Screen.width/Screen.height宽高比与真实物理分辨率宽比对不上产生黑边,不知道有没有相关问题的处理经验呢?


A:在player setting->Android->Resolution and presentation里面把以下这2个都勾上:

Hide Navigation Bar:启用该选项,用于处理安卓生命周期隐藏导航栏;

Render outside safe area:启用该选项可允许使用所有可用的屏幕空间进行渲染。


感谢萧小俊@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/667554a93d306f3e9d594c80
Terrain

Q:Unity自带的Terrain中草作为Detail,无法设置LOD Group。感觉草的LOD应该是一个非常基础的功能,Unity选择不支持这个功能的原因是什么?要想实现草的LOD,我想到的几种方式,还有更好的实现方式么?
1. 手动放置。
2. 自己写Procedural工具批量生成。
3. 使用Terrain的Paint Trees功能变通实现。即把草当作一种Tree,增大种植密度。不知道这种实现会不会有副作用。

A1:LOD一般不用于草,通常大批量的草都是使用GPU Instance。如果距离远的草,你可以通过逻辑控制远距离草的显示和隐藏。
感谢qingfeng@UWA问答社区提供了回答


A2:草通常是小型和密集的,对于这些对象应用LOD机制可能并不会显著提高性能。草地的渲染通常依赖于地形的着色器和草地批处理,因此Unity可能认为不需要为这些小对象单独设置LOD。

如果要快速解决问题,可以看看Unity Store中的Infini GRASS GPU Vegetation

感谢萧小俊@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/65fe527f5c7f5d2c5805d354
Platform

Q:Google Play选择了Target API Level 34之后,如果项目使用了Play Asset Delivery功能提交版本,会被Google报错(关于Foreground Services Permissions)。


前述截图中,点击Go to declaration后,展示一个空列表,并没有说明我要求了哪些 Permission。


尝试解决,在AndroidManifest中加入如下内容(想办法去除权限),仍然不能解决问题:


    <!-- Foreground Services permissions -->

    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" tools:node="remove" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" tools:node="remove" />

A:Android 14要求声明Foreground权限的时候,也同时指定Foreground Type,也就是FOREGROUND_SERVICE_DATA_SYNC,这两个权限确实是Play Asset Delivery引入的。但是如果Foreground权限只是由于Play Asset Delivery引入,那是不会提示报错的。

见官方文档:
https://support.google.com/googleplay/android-developer/answer/9888379?hl=en

建议在打包时,查看一下Manifest合并的Log,看Foreground权限是否由其他库引入,或者先去掉Play Asset Delivery库看下还有没有Foreground权限,一些旧版本的库是可能带入Foreground权限的。


感谢miao@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/668df113682c7e5cd61bf844
Physics

Q:请教一个问题,现在我有一个可以打出弧线弹道的迫击炮,可以放到场景里任何位置,怎么能算出可以打到的区域和打不到的区域?要考虑场景内建筑物的遮挡问题。


然后,旋转一周的话以多少角度来计算呢?


A:我们有个打抛物线的炮,是这样解决这个问题的:
将抛物线轨迹做成线段,自己根据性能估量要做成多少段,然后每段打射线,若打不过去,则说明碰到障碍物了


感谢qingfeng@UWA问答社区提供了回答,欢迎大家转至社区交流
https://answer.uwa4d.com/question/66823001682c7e5cd61bf831

封面图来源于网络


天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。


UWA官网:www.uwa4d.com

UWA社区:community.uwa4d.com

UWA学堂:edu.uwa4d.com

官方技术QQ群:793972859


(长按识别二维码进入UWA问答)


点击下方名片关注我们,将我设为星标,及时接收小编每日推送哦,性能优化不迷路~

 

UWA DAY 2024 |UWA官方议题公布


近期精彩回顾

【万象更新】UWA Gears正式上线,助力移动平台性能优化

【学堂上新】深入UGUI Soft Mask(软遮罩)组件原理

【学堂上新】深入UGUI Mask组件原理和性能深度优化

【厚积薄发】四种体积光的写法


侑虎科技
UWA,专业的游戏和VR应用性能优化平台。www.uwa4d.com
 最新文章