【问题标题】:Unity - Spawn a sprite as a child of a sprite (on top of sprite)Unity - 生成一个精灵作为精灵的孩子(在精灵之上)
【发布时间】:2017-12-07 21:36:31
【问题描述】:

我在做一些我认为应该很容易的事情时遇到了真正的问题,所以我可能做错了! 我在空间背景图像顶部有一个精灵,它位于画布内,相机固定在画布上并且可以四处移动。这是主要场景。

我现在希望玩家能够向车站添加房间。这基本上由另一个精灵组成,它可以插入到站精灵顶部的空间中。我可以将精灵添加到图像并在精灵视图中的站顶部看到它,但是在游戏运行时我无法在游戏视图中看到它。我试过了:

  • 拥有一个可以实例化游戏对象的画布,然后将图像设置为新的房间图像。
  • 将精灵添加到基站精灵,确保它们在同一层上,然后更改排序层和层中的顺序,我认为我没有正确执行此操作。

房间精灵是车站的孩子,我无法让它在游戏中显示。任何人都可以就我可能错过的事情提供任何建议吗?

【问题讨论】:

  • 这里没有看到任何明显的东西:我把一个精灵推到另一个精灵的孩子身上,孩子在上面渲染,我不需要调整任何东西。只要“层中的顺序”是相同的值(或朝向正无穷大),它就会呈现在顶部(如果不同的层,那么它基于层)。也就是说:精灵不是画布图像。精灵将始终呈现在屏幕空间和相机空间画布后面。
  • @Nick Proud 你真的不应该在 UI 中这样做,你试过在世界空间中简单地使用精灵吗?如果是,为什么这对你没有效果?
  • 这可能是我对画布缺乏了解。我将精灵包含在画布中,因为相机固定在其中作为可以移动的空间。主画布还包含我的 HUD。本质上,我需要相机从俯瞰车站的特定位置开始。然后,玩家可以移动相机俯视世界,同时保持 HUD 元素固定在适当的位置。因此,我为什么使用画布。我应该尝试任何替代方法吗?

标签: unity3d sprite


【解决方案1】:

您不应该在 UI 画布中渲染整个游戏;它们是为 UI 设计的。为了在 Canvas 对象中管理渲染顺序,您必须重新排序您的层次结构(这既慢又不必要)。

来自Unity's Canvas docs

画布中的 UI 元素按照它们出现的顺序绘制 层次结构。首先绘制第一个孩子,然后绘制第二个孩子, 等等。如果两个 UI 元素重叠,后一个将出现在 上一个的顶部。

要更改哪个元素出现在其他元素之上,只需 通过拖动来重新排列层次结构中的元素。订单可以 也可以通过在脚本上使用这些方法来控制 变换组件:SetAsFirstSiblingSetAsLastSiblingSetSiblingIndex.

相反,我建议您阅读Unity's Rogue-Like Tutorial,如果您不想阅读整个教程,至少可以看一下Sorting Layers 部分,以了解游戏应该如何正确使用SpriteRenderer。它们会更容易管理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    相关资源
    最近更新 更多