我的 Unity 场景中有四种不同的 Canvas 元素。这按关注点组织它们,但也提高了性能,因为如果我“弄脏”其中一个元素,我不必重建所有元素。我想创建每个预制件,这样我就可以在整个游戏中重复使用它们,而且我的场景文件中的元素也更少(我还没有弄清楚为什么 Unity 不重新组织 YAML 以匹配场景顺序和层次结构. 目前我看不出任何原因,这让源代码管理变得非常痛苦)。
所以,我的问题是:我应该在预制件中包含 Canvas 作为父游戏对象,还是应该让第一个孩子成为预制件(见图)?我看到两个观点:
- 一方面,扫描场景根中的元素列表并查看蓝色对象并知道它们在场景中自动复制是很好的。另外,存储在预制件中的对象越多,对我的 YAML 文件的污染就越少。
- 另一方面,在父级上使用 Canvas Scalar 脚本时,每次更改分辨率/平台时,预制件内的尺寸都会更新,并且我读过总是在预制件模式之外更新它们并不好。另一个问题是 UI 元素通常有很多外部引用来更新文本等。