【问题标题】:Unity TextMeshPro UGUI object is hidden behind other spritesUnity TextMeshPro UGUI 对象隐藏在其他精灵后面
【发布时间】:2020-04-28 03:46:36
【问题描述】:

所以我遇到了一个听起来应该相对容易解决的问题,而且可能是这样,而我只是把这一切都弄错了。我的游戏在我的所有精灵上都使用了排序层元素,这样它们就不会隐藏在其他精灵后面。

我正在尝试创建一个 TextMeshPro UI 对象(只是简单的文本),但由于我设置了这些排序层,它总是在其他精灵之后。我希望文本出现在所有精灵的前面。我尝试设置一个脚本来执行此操作,但我不完全确定该脚本指向何处。大多数答案都是针对网格渲染器的,但这似乎对我不起作用。

任何建议都非常感谢,谢谢!

编辑:文本与层次结构中的另一个精灵分组

编辑 2:应 Darkonekt 的要求,我将尝试添加更多解释。 我发现要复制的步骤:

  1. 创建新项目 (2D) 后,添加 TMPro 资产(我通过将 Text Mesh Pro UI 对象添加到场景并仅导入基本要素来完成此操作。)
  2. 在场景中放置任何形式的精灵(确保它是画布的子对象)
  3. 添加 Text Mesh Pro UI -Text 对象,确保它是画布的子对象
  4. 将 Canvas 的渲染模式设置为“屏幕空间 - 相机”,并将渲染相机设置为主相机
  5. 您可能需要重新调整精灵的大小,确保它占据了大部分屏幕
  6. 回到精灵,在Sprite Renderer Component中,点击排序层,然后添加排序层
  7. 随意命名,并确保它低于默认值
  8. 再次在精灵上,将排序层设置为前面,文本应该已经消失在它后面。

没有任何代码可以显示,因为上面列出的值都没有被任何代码改变。

Sorting Layer On Back

Sorting Layer On Front

【问题讨论】:

  • 你的精灵是 Sprite 组件还是它们都是 UI 组件?如果它们都是 UI 组件,则必须注意层次结构中的顺序,因为 Unity 以它们在层次结构中的相同顺序绘制所有 UI 对象,层次结构中的最后一个 UI 元素将覆盖所有其余元素。
  • 您可以尝试修改画布层设置。我猜 TextMeshPro 是通过它渲染的
  • @Windgate 它们都在 UI 中,重新排列它们可能会起作用,但我忘了提一些东西(我编辑了问题)文本与其他一些精灵组合在一起。我想我可以尝试创建一个空对象并将文本放在那里并重新排列。
  • 我们需要查看您的检查员的代码和图片,以便我们了解实际问题是什么......另外,如果您可以上传一个可复制的示例,那就太好了。
  • @Darkonekt 好的,谢谢,我再次编辑了这篇文章,希望能让它更容易理解

标签: c# unity3d


【解决方案1】:

为此,您必须确保以下几点:

  1. Sprite 变换位置的 Z 轴在检查器中为 0。
  2. 画布排序层也在前面(与精灵相同)。 当您将画布渲染模式设置为“屏幕空间 - 相机”时,此设置可用。
  3. Text Mesh Pro 对象的 Rect Transform 的 Z 轴位置为 0。

这应该可以帮助你达到你想要的结果。

发生这种情况的原因是,当您将 Sprite 的排序层设置为“前”时,它会位于默认层上的所有内容之上。

由于 Canvas 现在设置为默认层,因此除非明确指定,否则 Canvas 中的所有内容也都位于默认层中。

【讨论】:

  • 非常感谢您的帮助!我不得不将更多的东西移回默认排序层,但之后它就像一个魅力!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
相关资源
最近更新 更多