我写了一个游戏,可以从服务器下载图像,然后将它们存储在 Application.persistentDataPath 中。
我的问题是在保存少量图像时场景挂起,保存完成后,它会执行其余代码。
我该如何解决这个问题?
将图像保存到设备本地存储:
if (File.Exists (Application.persistentDataPath + "/LayoutImages/")) {
Debug.Log (imagesPathPrefix + " already exists.");
return;
}
File.WriteAllBytes (Application.persistentDataPath + "/LayoutImages/abc.jpg", image);
最佳答案
您可以创建一个Thread
来执行您的操作。这是一个例子:
class FileDownloader
{
struct parameterObject
{
public string url;
public string savePath;
}
static void downloadfunction(object data)
{
parameterObject obj = (parameterObject)data;
if (File.Exists(obj.savePath))
return;
using (WebClient Client = new WebClient())
{
Client.DownloadFile(obj.url, obj.savePath);
}
}
public static void downloadfromURL(string url, string savePath)
{
parameterObject obj = new parameterObject();
obj.url = url;
obj.savePath = savePath;
Thread thread = new Thread(FileDownloader.downloadfunction);
thread.Start(obj);
}
}
注意:如果您要在下载后立即使用图像,请不要使用线程。 Unity3d 不是线程安全的。
关于c# - 下载图像并将其保存到 Application.persistentDataPath 会挂起应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30189145/