Unity--WWW类与协程

协程: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();
    }
}

Unity--WWW类与协程_第1张图片

功能关联成功后,点击下载图片或视频就会显示在RawImage(白色区域)上。

你可能感兴趣的:(Unity3D-笔记)