首页 > 解决方案 > 使用许多画布和图形 raycaster 组件会有问题吗?

问题描述

我的游戏是一个纸牌游戏,它没有使用精灵,而是有很多 UI 图像。我必须为每个 UI 元素分配排序层和顺序,所以我为每个元素添加了一个“Canvas”组件并启用“覆盖排序”,然后为了拖动/单击它们,我添加了一个“Graphic Raycaster”他们每个人的组成部分。

这可以解决我的问题,但我担心这会占用大量资源并使其变慢(它在手机上运行)?

我必须分配排序层的原因是,对于许多 UI 元素,它们都有自己的粒子效果。我必须通过调整粒子的渲染器排序层将粒子放在它后面和其他元素的前面。

谢谢!

标签: unity3d

解决方案


经过一番研究,答案是肯定的,这是一个问题。

原因是对于每个画布,Unity 都必须进行新的绘制调用。所以如果画布太多,就会有问题。

另一方面,因为对于画布上的每次布局更改,Unity 都会重新计算其上的所有内容,因此不建议在游戏中使用单个大画布(除非它是非常简单的 UI 设计)。

对于 UI 元素,你应该根据它们在游戏中的布局变化将它们分成不同的组。对于那些不改变的,将它们放在一个画布中,对于一些经常变化的并在一起,将它们放在另一个画布中。


推荐阅读