c# - 下载图像并将其保存到 Application.persistentDataPath 会挂起应用程序

标签 c# image unity3d download save

我写了一个游戏,可以从服务器下载图像,然后将它们存储在 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/

相关文章:

c# - sql_variant 的大小限制超过

c# - 检查是否可以建立与数据库的连接

java - 如何将图像放在 JButton 上?

c# - 通用事件处理

c# - 在代码中初始化用户控件不起作用 - MVVM WPF

java - 从字节数组创建 16 或 32 位图像

Python图像显示

unity3d - (Unity) 将轮廓添加到 Alpha Cutout Shader

c# - 用子弹射击时物体不会被摧毁 - UNITY3D C#

c# - 无论如何,是否可以通过Everyplay检索上传到youtube的视频的URL?