我想在游戏中的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并且仍然会出现按钮在窗口后面。
任何建议都将不胜感激!
答案 0 :(得分:0)
执行此操作的方法是在DoTopScrollWindow()
中绘制按钮。
您不应该尝试将按钮放在顶部"窗口,你应该把它们放在"窗口,因为窗口是导航按钮的父级,从概念上讲。此外,在窗口中绘制它们意味着您可以利用相对定位和窗口大小调整,而无需编写大量额外代码。
According to the docs,func
中的参数GUI.Window()
是一个用于在窗口内显示内容的函数。
在这种情况下,您需要按钮"内部"那个窗口,所以在你传递给func
的函数中绘制它们。