有的时候我们需要加载网络上的歌曲,图片什么的
为了节省流量我们直接永久的保存到本地,然后再次使用的时候直接从本地就行加载就行了
下面我就以加载网络音频为例子上段代码
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();
}
}
}
其他格式 的文件都是这样下载的 只需修改路径 后缀名 文件名之类的就行 了