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();
我正在将我的 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();