c# - 如果这些游戏对象与 UI 无关,可以将 Canvas 对象 (rectTransform) 与常规游戏对象 (transform) 混合吗?

标签 c# unity-game-engine user-interface canvas transform

我最终遇到的情况是,我的游戏战斗系统有一个父 Canvas 元素(用于显示生命值文本等),并且混合了 UI 内容和可控制的游戏对象作为子元素。所以有些对象有 transform ,其他人有 rectTransform .

这是我的层次结构的一个小示例:

https://i.imgur.com/Aa4wovx.png

  • 父级 BattleCanvas 是一个 Canvas 对象 ( rectTransform )
  • BattleEnemyObjectBattlePlayerObject 是常规游戏对象 ( transform )
  • BattleObjects(所有实例化对象的容器)使用 rectTransform ,
  • 但它的子 SnakePlayer 是一个常规游戏对象 ( transform )

我开始意识到这有多么困惑,但到目前为止一切似乎都进展顺利。所以我的问题是,如果这些游戏对象与 UI 无关,可以将 Canvas 内容 ( rectTransform ) 与常规游戏对象内容 ( transform ) 混合吗?

我想我对 transform 之间的区别缺乏理解。和rectTransform 。如有任何建议,我们将不胜感激!

最佳答案

是的,绝对没问题。 RectTransform 继承自Transform。因此所有 RectTransform 都具有普通变换的所有功能。

许多人将 Canvas 的渲染模式更改为“世界空间”,然后将“矩形变换”视为普通变换,以将其放置在世界中。有一些有趣的效果,例如下面的效果,需要使用 RectTransform 作为变换。

enter image description here

您可以拥有多个具有多种渲染模式的 Canvas ,以获得一些非常有趣的效果。

关于c# - 如果这些游戏对象与 UI 无关,可以将 Canvas 对象 (rectTransform) 与常规游戏对象 (transform) 混合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68106581/

相关文章:

c# - 更新大型 xml 文档

unity-game-engine - 生成和显示数千个多边形的最佳实践

iphone - iPhone 应用程序的用户界面灵感

android - 一个接一个地实现两个自定义对话框的最佳方法是什么?

c# - 一个语句中的 Linq 和 foreach 是否优于 2 个单独的显式语句?

c# - 我在反序列化枚举时遇到问题

unity-game-engine - 获取旋转和位置之间的差异

C++ 库 : Questions need Definite Answers(Opinions)

c# - 使用 powershell 脚本通过 c# 重新启动应用程序池

javascript - Apache 未加载 WebGL 内容