Unity - 将精灵生成为精灵的子项(在精灵之上)

时间:2017-12-07 21:36:31

标签: unity3d sprite

我正在做一些我觉得应该很容易做的事情,所以我可能做错了! 我在空间背景图像上面有一个精灵,它位于画布内,相机固定在画布上并且可以移动。这是主要场景。

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

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

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

Rooms are empty but need a room sprite to be added by player

Sprite added and can be seen in game view Nothing seen during runtime

1 个答案:

答案 0 :(得分:1)

您不应该在UI Canvas中渲染整个游戏;它们是专为UI设计的。为了管理document.getElementById("table").addEventListener("click", function(event) 对象中的渲染订单,您必须对您的层次结构进行重新排序(这既慢又不必要)。

来自Unity's Canvas docs

  

“画布”中的UI元素按其出现的顺序绘制   层次结构。先吸引第一个孩子,接下来吸第二个孩子,   等等。如果两个UI元素重叠,则后一个将出现   最早的一个。

     

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

相反,我建议您浏览Unity's Rogue-Like Tutorial,如果您不想浏览整个教程,请至少查看Sorting Layers部分了解游戏应如何正确使用SetAsLastSibling。他们将更容易管理。