什么是WWW类
www就是网络工具类,Unity用于从网络上下载需要的文件,包括音频,视频,图片等文件的工具类.
HTTP 超文本传输协议,网络传输协议,服务器之间文件传输的规范
HTTP中的方法
<1>GET 获取服务器数据
<2>POST 上传数据到服务器
<3>PUT 修改数据
<4>DELETE 删除数据
www路径:
<1>http://网址 (网络请求,网络传输协议)
<2>https://网址 (网络请求,网络传输协议)
<3>file://本地文件地址 (本地请求,本地文件传输协议)
使用WWW类下载网络视频并在Unity中播放
<一般作为游戏的CG动画,和游戏中的广告植入等>
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using UnityEngine.UI;
using System;
public class VideosScript : MonoBehaviour {
RawImage _immage;
//定义变量路径
string vedioURL;
//本地路径,前面要三个斜杠.前两个表示本地 后一个斜杠表示电脑中的路径
//string _voideoURL = "file:///C:/Users/aixia/Desktop";
void Start () {
//视频路径 (这里博主没找到适合的视频网站。。。。。倍感失败)
vedioURL = "https://www.bilibili.com/5de0d107-7802-4c24-9473-3a085e451f32";
//图片路径
string url = "https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=1345734636,1096966958&fm=26&gp=0.jpg";
//开启协程 下载图片
StartCoroutine (IEPhoto (url));
//开启协程下载视频
//StartCoroutine (IEvedio (vedioURL));
}
#region 图片下载
//用协程异步加载视频,一般协程都与资源加载连用
IEnumerator IEPhoto(string url)
{
//创建www类,并把路径作为参数传给www的构造方法
WWW www = new WWW (url);
//www.isDone 该方法返回值为bool 加载完成的时候返回true
while (!www.isDone)
{
//该方法用于获取下载进度,值为0到1
print( www.progress.ToString());
yield return www;
if (LoadImage("MyImage"))
{
//File.WriteAllBytes方法将所有从网络上下载的文件保存在本地的位置,并重命名为MyImage.jpg;
//www.bytes,下载的文件
File.WriteAllBytes (Application.dataPath + "/Resources/MyImage.jpg", www.bytes);
//刷新Asset文件夹
UnityEditor.AssetDatabase.Refresh ( );
}
}
}
//该方法用于判断Resources文件夹中是否存在该图片
private bool LoadImage (string texturename)
{
//如果存在返回false 就不去下载
if (Resources.Load(texturename) != null)
{
Debug.Log ("图片已经存在");
return false;
}
else
{
//如果不存在返回true重新下载
Debug.Log ("图片不存在,开始下载");
return true;
}
}
#endregion
//视频下载
IEnumerator IEvedio(string url)
{
WWW www = new WWW (url);
while (!www.isDone)
{
if (www.progress<1)
{
yield return 0;
print ( www.progress);
}
yield return www;
File.WriteAllBytes (Application.dataPath+"/Resources/MyVedio.mp4",www.bytes);
UnityEditor.AssetDatabase.Refresh ( );
}
}
}