我想用:
实现简单的拖放public void OnDrag (PointerEventData eventData)
{
transform.position = eventData.position;
}
问题在于,当我开始拖动时,我想将 UI元素带到前景。做这样的事情:
public void OnBeginDrag (PointerEventData eventData)
{
transform.SetParent (transform.parent); // giving the parent transform or a transform of an element on top
}
这显然不是一般解决方案。所以我有一个问题。如何制作 UI元素 最顶层,是否有优雅方法?
答案 0 :(得分:2)
是的,如果您使用的是Unity GUI系统,则可以使用GUI.depth创建某种图层。
使用较低深度值绘制的GUI元素将显示在具有较高值的元素的顶部(即,您可以将深度视为距离相机的“距离”)。
以下是一个例子:
function OnGUI() {
GUI.depth = 1; // You set to 1 by default
if(GUI.RepeatButton(Rect(0,0,100,100), "My Button")) {
GUI.depth = 0; // When the button is clicked, Depth is set to 0 the button is on top
}
}
就我而言,我通常使用NGUI这是非常有效的&优化并允许您处理拖动和下降。
但是,如果您不使用Unity GUI(如果使用gameObjects)并且不想使用插件,则需要开发自己的系统。 实现预期效果的更简单方法是:
正交:相机将均匀渲染物体,没有透视感。
OnDrag
您应该将对象移近相机。这样,它看起来就是最近的。 答案 1 :(得分:0)
我实际上找到了一个非常简单的简单解决方案。将UI Element transform
设置为:
transform.SetParent(transform.root);
UI Element
被放置为first child
的{{1}},因此有效地将自己置于前景。