2015-06-11 66 views
1

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

回答

3

完整的源代码和原来的职位,可以发现here

您可以尝试使用一个布尔属性伪造的窗口关闭/打开的效果,每当二传手被调用时,一些功能OnWindowClosed()为得到所谓:

测试在Mac OSX: enter image description here

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"); 
} 
+0

嗨,该SOLU重刑看起来不错。但在这种情况下,您已经创建了一个自定义按钮。但任何想法如何将其链接到出现在编辑器窗口右上角的传统(x)按钮。我正在为艺术家开发这个工具。所以我想尽可能保持简单。否则,我将不得不创建一个自定义按钮并将其用于关闭。 – Aadithya

+0

我实际上发现了一个EditorWindow.OnDestory(),在昨天整个过程中我都无法使用它。但我真的很喜欢你的解决方案 - 这是一个有趣的方式。谢谢! – Aadithya