Unity实现 下载网络资源到本地 WWW加载

来源:互联网 发布:linux lost found 编辑:程序博客网 时间:2024/05/16 12:36

有的时候我们需要加载网络上的歌曲,图片什么的   

为了节省流量我们直接永久的保存到本地,然后再次使用的时候直接从本地就行加载就行了    

下面我就以加载网络音频为例子上段代码

using System.Collections;using System.Collections.Generic;using UnityEngine;using System.IO;using UnityEngine.UI;public class Downdload : MonoBehaviour{    public AudioSource audioSource;    string urlPath;//资源网络路径    string file_SaveUrl;//资源保路径    FileInfo file;    public static Downdload instance;    private bool p = true;    private bool down;    private float t;    private float time;    private void Awake()    {        instance = this;    }    private void Start()    {        time = 3;        t = 0;    }    public void play()    {        urlPath = @"http://m128.xiami.net/712/55712/2100253402/1775451414_59502672_l.mp3?auth_key=1508986800-0-0-eaddaaacb20bc6f1fe4dc8ee89ba0732";        file_SaveUrl = @"D:\Music\123.mp3";//保存的本地路径    记得加上文件后缀名        file = new FileInfo(file_SaveUrl);        Debug.Log(file_SaveUrl);        DirectoryInfo mydir = new DirectoryInfo(file_SaveUrl);        if (File.Exists(file_SaveUrl))//判断一下本地是否有了该音频  如果有就不需下载        {            string s = @"file://" + file_SaveUrl;            StartCoroutine(LoadAudio(s));        }        else        {            StartCoroutine(DownFile(urlPath));        }    }    IEnumerator DownFile(string url)    {        WWW www = new WWW(url);        down = false;        yield return www;        down = true;        if (www.isDone)        {            Debug.Log("下载完成");            byte[] bytes = www.bytes;            CreatFile(bytes);            string str = @"file://" + file_SaveUrl;            StartCoroutine(LoadAudio(str));        }    }    void CreatFile(byte[] bytes)    {        Stream stream;        stream = file.Create();        stream.Write(bytes, 0, bytes.Length);        stream.Close();        stream.Dispose();    }    public IEnumerator LoadAudio(string recordPath)    {        WWW www = new WWW(recordPath);        yield return www;        AudioClip ac = WWWAudioExtensions.GetAudioClip(www);        if (www.isDone)        {            audioSource.clip = ac;            audioSource.Play();        }    }}
其他格式  的文件都是这样下载的   只需修改路径  后缀名 文件名之类的就行 了

原创粉丝点击