unity3d - 使用许多画布和图形 raycaster 组件会有问题吗?
问题描述
我的游戏是一个纸牌游戏,它没有使用精灵,而是有很多 UI 图像。我必须为每个 UI 元素分配排序层和顺序,所以我为每个元素添加了一个“Canvas”组件并启用“覆盖排序”,然后为了拖动/单击它们,我添加了一个“Graphic Raycaster”他们每个人的组成部分。
这可以解决我的问题,但我担心这会占用大量资源并使其变慢(它在手机上运行)?
我必须分配排序层的原因是,对于许多 UI 元素,它们都有自己的粒子效果。我必须通过调整粒子的渲染器排序层将粒子放在它后面和其他元素的前面。
谢谢!
解决方案
经过一番研究,答案是肯定的,这是一个问题。
原因是对于每个画布,Unity 都必须进行新的绘制调用。所以如果画布太多,就会有问题。
另一方面,因为对于画布上的每次布局更改,Unity 都会重新计算其上的所有内容,因此不建议在游戏中使用单个大画布(除非它是非常简单的 UI 设计)。
对于 UI 元素,你应该根据它们在游戏中的布局变化将它们分成不同的组。对于那些不改变的,将它们放在一个画布中,对于一些经常变化的并在一起,将它们放在另一个画布中。
推荐阅读
- angular - 在另一个组件的 App.component.html 中设置值
- cassandra - Cassandra 如何查看活动用户连接
- php - 如何在 Laravel 中自定义日志格式?
- javascript - 如何从点击事件中丢失可信上下文
- gtk - 使用 scroll_to_iter 在 gtkada 中自动滚动 Text_View
- git - Jenkins - 一个版本有多少 CI/CD 管道?
- r - 计算传递闭包的时间
- regex - 我的 URL 正则表达式不完美,如何修复并使组可选?
- javascript - 使用来自另一个对象的键在新对象中使用
- shell - rc.local python 脚本无关错误:“getrandom 表示 ...”