【问题标题】:Unity3D draw GUI.Button over GUI.WindowUnity3D 在 GUI.Window 上绘制 GUI.Button
【发布时间】:2014-11-03 00:20:26
【问题描述】:

我想在游戏中的 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,但按钮​​仍然出现在窗口。

任何建议将不胜感激!

【问题讨论】:

    标签: c# user-interface unity3d depth


    【解决方案1】:

    这样做的方法是在DoTopScrollWindow()中绘制按钮。

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

    According to the docsGUI.Window()中的参数func是设计用来在窗口内显示内容的函数。

    在这种情况下,您希望您的按钮“在”该窗口“内部”,因此请在您作为func 传入的函数中绘制它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      相关资源
      最近更新 更多