协程:Unity的协程系统是基于C#的一个简单而强大的接口,是可以把一个方法拆分成多次执行的一种接口
协程的开启和停止:
通过传入方法开启协程:StartCoroutine(ShowTime());
通过传入字符串类型的方法名称开启协程:StartCoroutine(“ShowTime”);
停止协程:StopCoroutine(“ShowTime”);
**StopCoroutine只能停止以字符串方式开启的协程
WWW
可以简单的访问web页面
是一个小工具模块检索url的内容;
后台下载通过调用WWW(url),返回一个新的WWW对象;
通过检查isDone属性来查看是否已经下载完成。
属性 | 描述 |
---|---|
texture | 下载到的图片 |
audioClip | 下载到的音频 |
movie | 下载到的视频 |
bytes | 下载到的比特数组 |
text | 下载道的Web文字 |
isDone | 下载是否完毕 |
progress | 当前下载进度 |
url | 下载地址 |
图片资源类:Texture
声音资源类:AudioClip
视频资源类:MovieTexture
例:用协程下载一张图片并显示在UI上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using UnityEditor;
public class XcTestScripts : MonoBehaviour {
public RawImage rawImg;//用来显示下载图片或视频
string imgPath;
void Start()
{
//保存下载的图片
imgPath = Application.dataPath+"/Resources/yourimg.jpg";
}
//协程方法
//片段式的执行方法体
//遇到yield return 结束当前片段
//协程方法都没有返回值
//方法名称前加IEnumerator
IEnumerator DownLoadImg()
{
string url ="需要下载的图片地址";
WWW ww = new WWW (url);
//判断是否下载完成
while (ww.isDone == false){
Debug.Log(ww.progress);//下载进度
yield return 0;
}
File.WriteAllBytes(imgPath,ww.bytes);
AssetDatabase.Refresh();//刷新本地文件
DisplayImg();//显示图片
}
void DisplayImg()
{
//判断图片是否已经存
if(File.Exists(imgPath)){
//存在则显示图片
rawImg.texture = Resources.Load("yourimg") as Texture;
}else{
//不存在则下载图片
StartCoroutine(DownLoadImg());
}
}
//在外部搭建好UI,关联按钮事件
public void Download()
{
DisplayImg();
}
}
功能关联成功后,点击下载图片或视频就会显示在RawImage(白色区域)上。