如果(File.Exists(Application.persistentDataPath + localUserFileName))挂起应用程序

时间:2018-12-18 14:28:15

标签: c# unity3d

if (File.Exists(Application.persistentDataPath + localUserFileName))   

挂起应用程序
Unity版本2018.3.0f2 它适用于2018.3之前的版本

问题似乎出在Application.persistentDataPath上,因为以下行也会导致应用挂起。

Debug.Log("Application.persistentDataPath " + Application.persistentDataPath);  

有没有一种方法可以解决此问题而不降级Unity?

控制台中不会产生错误日志。 正如@ andrew-%c5%81ukasik所建议的那样,我测试了以下代码。

try
{
    Debug.Log("Application.persistentDataPath " + Application.persistentDataPath);
}
catch (System.Exception ex)
{
    Debug.LogException(ex);
}

现在,控制台中出现两个错误: 1. GetGfxDevice()仅应从主线程调用(此错误涉及catch块中的行) 2. UnityException:get_persistentDataPath只能从主线程调用。 加载场景时,将从加载线程执行构造函数和字段初始化程序。 不要在构造函数或字段初始化程序中使用此函数,而应将初始化代码移至Awake或Start函数。 (此错误是指try块中的行。)

这不是Download and save image into Application.persistentDataPath hangs the app的副本,因为前一个的悬挂问题与从url下载并保存到本地文件有关。但是,这是一个纯粹的本地过程。

1 个答案:

答案 0 :(得分:0)

将此代码放在try-catch块中:

try
{
    /* here */
} catch( System.Exception ex )
{
    Debug.LogException(ex);
    //you can add additional code here to handle this exception
    //example: break loop (especially when it's infinite one), stop method execution, etc.
}

有时,代码会引发未被统一捕获的异常。例如,当代码不在主线程上执行时,就会发生这种情况。

也打开editor raw log files,任何有错误迹象的地方都会出现