首页 > 解决方案 > 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 中使用这个小脚本,这有关系吗?

标签: c#unity3d

解决方案


我会说它是一样的,你可以按照你更喜欢的方式来做。如果画布组件已经有一个选项,以便您可以选择要在哪个空间中呈现画布,我会这样做。使用该选项,将发生与带有 的选项相同的转换Camera.WorldToScreenPoint。做同一件事的不同方法。

根据计算机图形中的变换顺序,到屏幕空间的变换是最后一个。

如果您可以跳过或保护某些转换,因为您可能会在确定的空间中进行两次工作,那么进行计划很重要,但在这种情况下,我认为不是。

例如,如果您想要世界空间中的画布,并且您将画布渲染模式设置为屏幕空间,然后使用 将其移动到世界Camera.cameraToWorldMatrix,那将没有意义,因为您将无用地进行 4 次额外转换,2 次转换从世界空间到屏幕空间,再2个回到世界空间。

您可以在此处此处阅读计算机图形中的空间主题。这是一个很深的话题,但如果你喜欢计算机图形学,值得努力去理解它。


推荐阅读