Application.Quit() 上的 Unity 5.2.1 构建崩溃; Windows 触摸

Unity 5.2.1 Build crash on Application.Quit(); with Windows Touch

我正在将我的 Unity 4 项目升级到 Unity 5.2.1。我用过 Application.Quit();单击按钮关闭应用程序。这在早期(Unity 4)中使用鼠标和触摸都可以正常工作,现在(Unity 5.2)也可以通过鼠标单击正常工作。但是,如果我使用 Touch(在 Windows 8 或 Windows 7 触摸屏上)单击按钮,应用程序会崩溃。

然后我通过创建一个新的Unity项目进行测试,并将带有以​​下代码的cs文件添加到主摄像头。当我用 Touch 单击此按钮时,它崩溃了。但不会因鼠标单击而崩溃。这是 Unity 5.2.1 中的错误吗?我该如何解决这个问题?

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {

public Texture btnTexture;

void OnGUI()
{
    if (!btnTexture)
    {
        Debug.LogError("Please assign a texture on the inspector");
        return;
    }
    if (GUI.Button(new Rect(10, 10, 50, 50), btnTexture))
    {
        Debug.LogError("Clicked the button with an image");
        Application.Quit();
    }

    if (GUI.Button(new Rect(10, 70, 50, 30), "Click"))
        Debug.LogError("Clicked the button with text");

    }
}

谢谢

[编辑:] 这解决了问题:

System.Diagnostics.Process.GetCurrentProcess().Kill();
// instead of
// Application.Quit();

您是否尝试过从 OnGUI 方法外部调用 Application.Quit? 像这样:

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour
{
    void OnGUI()
    {
        if (GUI.Button(new Rect(10, 10, 50, 50), "Exit"))
        {
            StartCoroutine(Quit());
        }
    }

    public static IEnumerator Quit()
    {
        yield return new WaitForEndOfFrame();
        Application.Quit();
    }
}

if (Input.GetKey("escape")) Application.Quit();