Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 检测GUI窗口的统一关闭_Unity3d - Fatal编程技术网

Unity3d 检测GUI窗口的统一关闭

Unity3d 检测GUI窗口的统一关闭,unity3d,Unity3d,有没有办法检测GUI窗口何时关闭?我正在构建一个编辑器工具,我需要在窗口关闭后执行一些操作。理想情况下,如果有一个回调或事件通知我,那么这将是完美的。我找了很多,但什么也没找到。也可能是我使用了错误的关键字进行搜索。有什么解决办法吗?非常感谢您的帮助。谢谢 可以找到完整的源代码和原始帖子: 您可以尝试使用布尔属性来模拟窗口关闭/打开效果,只要调用setter,就会调用一些函数OnWindowClosed(): 在Mac OSX上测试: 可以找到完整的源代码和原始帖子: 您可以尝试使用布尔属性来

有没有办法检测GUI窗口何时关闭?我正在构建一个编辑器工具,我需要在窗口关闭后执行一些操作。理想情况下,如果有一个回调或事件通知我,那么这将是完美的。我找了很多,但什么也没找到。也可能是我使用了错误的关键字进行搜索。有什么解决办法吗?非常感谢您的帮助。谢谢

可以找到完整的源代码和原始帖子:

您可以尝试使用布尔属性来模拟窗口关闭/打开效果,只要调用setter,就会调用一些函数OnWindowClosed()

在Mac OSX上测试:


可以找到完整的源代码和原始帖子:

您可以尝试使用布尔属性来模拟窗口关闭/打开效果,只要调用setter,就会调用一些函数OnWindowClosed()

在Mac OSX上测试:


嗨,这个解决方案看起来很棒。但在本例中,您创建了一个自定义按钮。但是你知道我如何将它链接到编辑器窗口右上角的传统(x)按钮吗。我正在为艺术家开发这个工具。所以我想让它尽可能简单。否则,我将不得不创建一个自定义按钮并使用它来关闭。实际上,我找到了一个EditorWindow.OnDestory(),而我在昨天的整个过程中都无法找到它。但我真的很喜欢你的解决方案——一种有趣的方式。谢谢嗨,这个解决方案看起来很棒。但在本例中,您创建了一个自定义按钮。但是你知道我如何将它链接到编辑器窗口右上角的传统(x)按钮吗。我正在为艺术家开发这个工具。所以我想让它尽可能简单。否则,我将不得不创建一个自定义按钮并使用它来关闭。实际上,我找到了一个EditorWindow.OnDestory(),而我在昨天的整个过程中都无法找到它。但我真的很喜欢你的解决方案——一种有趣的方式。谢谢
bool _bWindowActive;
public bool bWindowActive {
    get { return _bWindowActive;}
    set { 
        _bWindowActive = value;
        if (!bWindowActive) {
            //This is called everytime, when bWindowActive = false;
            OnWindowClosed ();  
        }
    }
}

public void OnWindowClosed ()
{
    Debug.Log ("Windows Closed");
}

public void OnGUI() {

    if (GUI.Button (new Rect (10, 20, 100, 20), "Show Window"))
        bWindowActive = true;
    if (GUI.Button (new Rect (10,60,100,20), "Close Window"))
        bWindowActive = false;

    if (bWindowActive) {
        GUI.Window (0, new Rect(200, 10, 200, 200), DoMyWindow, "My Window");
    }
}

public void DoMyWindow(int windowID) {
    if (GUI.Button (new Rect (10,20,100,20), "Hello World"))
        print ("Got a click");
}