打开网易新闻 查看精彩图片

这是第418篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com

本期目录:

  • OpenGL中Shader LOD失效
  • DoTween的GC优化
  • 开发微信小程序游戏有没有类似Debug真机图形的方法
  • 射线和Mesh三角面碰撞检测的算法

Rendering

Q:我切换为OpenGL之后,发现切换Shader LOD的功能不能用了,切换为Vulkan没问题,但是OpenGL就不行。同样的Shader代码,同样的LOD配置。有什么解决思路吗?

切换为OpenGL之后,Frame Debugger抓帧,都看不到那些本来要绘制的物体,感觉是完全没有找到对应的LOD SubShader。

A:Unity引擎里没有处理好关于CBuffer变量的问题。如果CBuffer中有Shader用不到的变量,并且这个变量没有在Properties中定义,那么就会导致对应的Pass直接不渲染。

修改方法就是,要么直接去掉这些不用的CBuffer中的变量,要么增加对应Properties中的定义。

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

https://answer.uwa4d.com/question/6784ada03d306f3e9d594e0f

Script

Q:为什么DoTween中的APIGetTweener会有GC?因为没有DoTween的源码,不知道有什么替代方案吗?

A1:可以参考以下文章:

Demigiant/dotween: A Unity C# animation engine. HOTween v2

https://github.com/Demigiant/dotween

感谢zerolj@UWA问答社区提供了回答

A2:可以参考以下文章:

AnnulusGames/LitMotion: Lightning-fast and Zero Allocation Tween Library for Unity

https://github.com/AnnulusGames/LitMotion

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

https://answer.uwa4d.com/question/676698093d306f3e9d594dd0

Rendering

Q:开发微信小程序游戏有什么科学的Debug真机图形的方法吗?比如RenderDoc?

A1:推荐Frame Debugger,团结可用。

感谢tmp@UWA问答社区提供了回答

A2: 1. 游戏可以在浏览器跑的话,可以用SpectorJS( https://github.com/BabylonJS/Spector.js/ )。

2. RenderDoc曾经也可以抓Chrome,但后来官方禁了,可能需要自己魔改编译一个RenderDoc。

3. 也可以用MuMu模拟器+RenderDoc抓微信,MuMu需要开启Vulkan模式,RenderDoc开全局Hook,Attach到MuMu的进程上,但是抓到的是Vulkan的API。

感谢littlesome@UWA问答社区提供了回答

A3: RenderDoc可以考虑,但需要旧版本的RenderDoc。

或者配合模拟器截帧,或者Root的手机都可以,或者用浏览器都行,方式很多,个人推荐模拟器+截帧。

感谢司马老师@UWA问答社区提供了回答,欢迎大家转至社区交流

https://answer.uwa4d.com/question/677250003d306f3e9d594de3

Physics

Q:请问有没有射线和Mesh所有三角面碰撞检测的算法?

A:非常古早的DX9官方示例里面就有:

https://www.tutorialspoint.com/directx/directx_picking.htm

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

https://answer.uwa4d.com/question/6784b469682c7e5cd61bf9f2

封面图来源于网络

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

UWA官网:www.uwa4d.com

UWA社区:community.uwa4d.com

UWA学堂:edu.uwa4d.com

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

近期精彩回顾