提问者:小点点

Unity sprite拖动时不可见


我在一个2D游戏中使用Unity(我对它还是很业余的),虽然使用create->ui->image添加一个新的sprite工作很好,但无论我从资产文件夹中拖放一个图像,它总是位于我为画布设置的背景后面,不管我是否使用更高的排序顺序,如果图像是画布的子级,或者图层对我的所有画布元素都是相同的(UI或默认)。在尝试拖动动画时也会得到相同的结果。

我在某个地方读到画布有点像另一个UI元素,图像必须是它的子元素才能显示在它上面,但即使我将它作为子元素拖到画布上,我仍然得到相同的结果。其他的想法是使用世界空间模式,这似乎是为精灵修复它,但我只是不确定为什么。

有人能解释一下发生了什么吗?我真的找不到一个很好的资源来解释它,以这样一种方式来帮助我理解。谢谢!


共1个答案

匿名用户

在screenspace模式下,画布总是呈现在正常场景对象的顶部(按设计)。将从UnityEngine.Object继承的类型(如sprites)拖放到Canvas层次结构中不会将它们放在screenspace画布上,而是放在(2D)3D场景中(即使它们在Canvas层次结构中)。为了使图像符合画布可视化排序深度(层次结构中的顺序),您必须放置UnityEngine.ui.image,然后向其添加资源精灵(如您发现的那样)。在这一点上,您可以控制sprite资源的“深度”,仅相对于其他Canvas UI对象,并且它将始终位于其他基于场景的对象之上。

换句话说,Canvas及其UnityEngine.UI对象(在screenspace模式下)将始终呈现在正常场景对象的顶部(即像HUD一样)。在worldspace模式下,每个Canvas对象(及其UnityEngine.UI子对象)都可以在3D场景中定位,就像它是一个普通场景对象一样(或多或少)。