c# - Camera.main.WorldToScreenPoint 是什么意思?
问题描述
这与将编辑器中的 Canvas 更改为 World Space 模式然后拖动 Camera 相同吗?这与脚本中的 Camera.main.WorldToScreenPoint 相同吗?
我想在立方体或我的播放器的任何对象上方放置 UI 文本。我使用了带有 UI 文本的画布,并在画布中使用相机将渲染器的模式设置为世界空间,它工作正常。
但在本教程中,她使用的是带有 Camera.main.WorldToScreenPoint 的小脚本
https://www.youtube.com/watch?v=0bvDmqqMXcA
我想知道什么更好用或正确的方法是什么?我是在编辑器的画布中使用世界空间还是在 Camera.main.WorldToScreenPoint 中使用这个小脚本,这有关系吗?
解决方案
我会说它是一样的,你可以按照你更喜欢的方式来做。如果画布组件已经有一个选项,以便您可以选择要在哪个空间中呈现画布,我会这样做。使用该选项,将发生与带有 的选项相同的转换Camera.WorldToScreenPoint
。做同一件事的不同方法。
根据计算机图形中的变换顺序,到屏幕空间的变换是最后一个。
如果您可以跳过或保护某些转换,因为您可能会在确定的空间中进行两次工作,那么进行计划很重要,但在这种情况下,我认为不是。
例如,如果您想要世界空间中的画布,并且您将画布渲染模式设置为屏幕空间,然后使用 将其移动到世界Camera.cameraToWorldMatrix
,那将没有意义,因为您将无用地进行 4 次额外转换,2 次转换从世界空间到屏幕空间,再2个回到世界空间。
推荐阅读
- amazon-web-services - Kinesis 流到 AWS lambda
- yarnpkg - 如何使用 Yarn 定位单个工作区?
- javascript - 为什么我的生成器在迭代后会变空?
- c++ - 推断 Lambda 捕获类型
- windows - 为什么这个简单的 Powershell 脚本在需要时不退出?
- python - 类型错误:generate_input() 缺少 1 个必需的位置参数:'n'
- java - 如何使用 Apache Jena 在 SPARQL 中考虑子类关系?
- c# - EF Core Left Outer Join 失败,可空对象必须有一个值
- php - php mysql ssl 连接失败,访问被拒绝错误
- java - 如何从资源服务器中的 Spring Security OAuht2 Boot 中提取声明?