我最终遇到的情况是,我的游戏战斗系统有一个父 Canvas 元素(用于显示生命值文本等),并且混合了 UI 内容和可控制的游戏对象作为子元素。所以有些对象有 transform
,其他人有 rectTransform
.
这是我的层次结构的一个小示例:
- 父级 BattleCanvas 是一个 Canvas 对象 (
rectTransform
) - BattleEnemyObject 和 BattlePlayerObject 是常规游戏对象 (
transform
) - BattleObjects(所有实例化对象的容器)使用
rectTransform
, - 但它的子 SnakePlayer 是一个常规游戏对象 (
transform
)
我开始意识到这有多么困惑,但到目前为止一切似乎都进展顺利。所以我的问题是,如果这些游戏对象与 UI 无关,可以将 Canvas 内容 ( rectTransform
) 与常规游戏对象内容 ( transform
) 混合吗?
我想我对 transform
之间的区别缺乏理解。和rectTransform
。如有任何建议,我们将不胜感激!
最佳答案
是的,绝对没问题。 RectTransform
继承自Transform
。因此所有 RectTransform 都具有普通变换的所有功能。
许多人将 Canvas 的渲染模式更改为“世界空间”,然后将“矩形变换”视为普通变换,以将其放置在世界中。有一些有趣的效果,例如下面的效果,需要使用 RectTransform
作为变换。
您可以拥有多个具有多种渲染模式的 Canvas ,以获得一些非常有趣的效果。
关于c# - 如果这些游戏对象与 UI 无关,可以将 Canvas 对象 (rectTransform) 与常规游戏对象 (transform) 混合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68106581/