【问题标题】:Unity UI Text positionUnity UI 文本位置
【发布时间】:2019-02-11 00:40:33
【问题描述】:

我正在尝试学习 Unity UI 元素的位置。但是,当我尝试使用此代码 Debug.Log (UI_Text.transform.position); 获取 UI 文本位置时,我得到了这样的高点 (6846.1, 29931.3, 10.0)。在我的代码中,我将 UI 文本 附加为带有 UI_Text 名称的 Gameobject。我也可以使用这两个代码获取 UI 元素的屏幕和世界点:

Debug.Log (Camera.main.WorldToScreen(UI_Text.transform.position));
Debug.Log (Camera.main.ScreenToWorld(UI_Text.transform.position));

这 2 个代码工作正常,给出了场景和世界点,我理解这些。 但我不知道如何使用这个代码Debug.Log (UI_Text.transform.position); 以及这个位置是什么(6846.1、29931.3、10.0)。我怎样才能从像这样的 Camera.main.Something 的相机中获得这个位置? 这是我的Canvas inspector 这里是UI text inspector

【问题讨论】:

  • 当您查看场景视图时,您会看到画布是一个大矩形,因此您获得的位置是基于该矩形的世界位置。使用世界位置不一定有意义(尽管有时),通常,您使用锚位置和 sizeDelta 位置的混合。您可以详细说明您想要实现的目标,以便更容易理解。
  • @Everts 我正在使用 Camera.main.ScreenToWorld 将鼠标位置转换为世界位置,并将 GameObject 的位置等同于该位置。但它不适用于 UI 元素
  • 您的 UI 画布在世界坐标的哪个位置?它是放在奇怪的地方还是放在 0,0,0 附近?
  • @RonBeyer 我画布的世界位置是 (484.5, 284.0, 0.0)。我猜这是默认位置,因为我无法更改它
  • 您的画布渲染模式是在屏幕空间叠加还是世界空间?如果您想在屏幕上创建静止的东西,例如 HUD,您将使用屏幕空间叠加。如果您想在世界本身中显示某些东西,例如敌人上方的浮动生命值条,您将使用世界空间。此外,如果您要提供层次结构和检查器的屏幕截图(选择画布)以及有关玩家在这种情况下将要做什么的一些上下文,这可能会有所帮助。

标签: c# user-interface unity3d canvas


【解决方案1】:

您可以将渲染模式更改为太空世界 - 相机。 image1

在此之后将主摄像机设置为 RENDER CAMERA。 image2

这种模式非常适合 2d 游戏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-09
    • 2021-11-12
    • 2016-10-31
    • 1970-01-01
    • 2020-09-20
    • 2020-12-02
    • 1970-01-01
    • 2021-06-22
    相关资源
    最近更新 更多