Unity3D在GUI.Window上绘制GUI.Button

时间:2014-09-09 14:18:29

标签: c# user-interface unity3d depth

我想在游戏中的GUI窗口上绘制一个GUI按钮,但无论我尝试什么,按钮总是出现在后面。

这是我的代码:

 GUI.depth = -30;
        Rect navBackButton = new Rect(10, 10, 10, 10);
        // DRAW NAVIGATION BUTTONS
        if (GUI.Button(navBackButton, navBackButtonTexture))
        {
            // DO LOGIC HERE
        }

        GUI.depth = 10;

        topScrollRect = new Rect(0, 0, Screen.width, topScrollHeight);
        topScrollListSize = new Vector2(topScrollRect.width - 2*listMargin.x, topScrollRect.height - 2*listMargin.y);

        GUI.skin.window = topStyle;
        GUI.Window(0, topScrollRect, (GUI.WindowFunction)DoTopScrollWindow, "");

我试图在绘制窗口之前绘制按钮,反之亦然,但两者都有相同的结果。

在这个论坛帖子(http://forum.unity3d.com/threads/setting-depth-of-a-window.12554/)中,它表示任何深度小于1的GUI控件都会出现在GUI窗口的前面,但是我已将深度设置为-30并且仍然会出现按钮在窗口后面。

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:0)

执行此操作的方法是在DoTopScrollWindow()中绘制按钮。

您不应该尝试将按钮放在顶部"窗口,你应该把它们放在"窗口,因为窗口是导航按钮的父级,从概念上讲。此外,在窗口中绘制它们意味着您可以利用相对定位和窗口大小调整,而无需编写大量额外代码。

According to the docsfunc中的参数GUI.Window()是一个用于在窗口内显示内容的函数。

在这种情况下,您需要按钮"内部"那个窗口,所以在你传递给func的函数中绘制它们。