Unity如何使用WWW类和协程完成图片、视频下载播放(一)
来源:互联网 发布:mac虚拟机安装linux 编辑:程序博客网 时间:2024/06/05 22:37
今天讲解一下如何使用WWW类和协程完成简单的图片和视频下载播放功能。
一、WWW类
WWW是一个Unity开发中非常常用到的工具类,主要提供一般Http访问的功能,以及动态从网上下载图片、声音、视频、Unity资源等。
注意:iPhone支持http://, https://和 file://协议;ftp://协议的支持仅限于匿名下载。其他协议不被支持。
当在windows和Windows Store Apps使用文件协议来访问本地文件,需要使用file:///(带有三个斜线)。
WWW类的主要常用属性有:
www类加载图片的官方的示例代码如下:
using UnityEngine;
using System.Collections;
public class ExampleClass: MonoBehaviour{
public string url= "http://images.earthcam.com/ec_metros/ourcams/fridays.jpg";
IEnumerator Start() {
WWW www = new WWW(url);
yield return www;
renderer.material.mainTexture = www.texture;
}
}
二、协程
1、什么是协程?
协程是一个分部执行,遇到条件(yield return 语句)会挂起,直到条件满足才会被唤醒继续执行后面的代码。
Unity在每一帧都会去处理对象上的协程。Unity主要是在Update后去处理协程(检查协程的条件是否满足)。协程跟Update()其实一样的,都是Unity每帧都会去处理的函数。如果在一个对象的前期调用协程,协程会立即运行到第一个 yield return 语句处,如果是 yield return null ,就会在同一帧再次被唤醒。
2、协程的写法
Unity的协程系统是基于C#的一个简单而强大的接口 ,IEnumerator,它允许你为自己的集合类型编写枚举器。也就是一个 IEnumerator 返回值,一个
yield return null的语句。
IEnumerator SayHi()
{
//协程中必须有返回值 yield return
yield return null;
}
//带参数的:
IEnumeratorSayHello(string name){
print (name);
yield return null;
}
3.*协程中的细节*
1.协程与普通方法一样,可以被多次调用,
2.协程一旦被开启之后,总是试图将方法中的代码执行完,之后停止。
3.在协程内,如果遇到yield return null ,0 , 1 ...;表示剩余代码将在下一帧继续执行,
4.在协程中遇到 yield return new WaitForSeconds (n);代码;表示剩余代码将在 n秒之后执行。
5.在协程中如果遇到 yield return StartCoroutine (Son ()), 表示剩余代码将在子协程执行完成之后继续执行。子协程仍然满足协程基本规则。
6.在协程中如果遇到 yield return new WaitForFixedUpdate (), 表示剩余代码将在FixedUpdate执行完毕之后继续向下执行。
7. 在协程中如果遇到 yield return new WaitForEndOfFrame (), 表示剩余代码将在ONGUI执行完毕之后继续向下执行。
8.在协程中如果遇到 yield return WWW,表示剩余代码将在 www下载文件之后继续向下执行。
9.在协程中如果遇到 yield return obj ,表示剩余代码将在obj部位空的时候继续向下执行。
10.在协程中如果遇到 yield return new WaitForSeconds (n) ,会受到Time.timeScale的影响。
11.协程方法,可以当做普通方法,在两个脚本之间自由调用。
12.生命周期内的方法,也可以改造成协程方法。
4、启动协程的写法。
//3.1 启动协程
StartCoroutine(SayHi());
//3.2 方法名开启
StartCoroutine("SayHi");
//3.3 启动带参数的协程
StartCoroutine(SayHello("hello"));
StartCoroutine ("SayHello","你好");
//关闭协程 ,注意只能通过字符串去关闭一个协程。
StopCoroutine("SayHi");
代码示例:利用一个协程和www类实现简单的图片下载展示:
1.在unity中搭建好一个场景需要一个RawImage。
2.创建一个脚本,完成以下代码:
// 1) 定义一个RawImage用于展示图片
RawImage l_rawImage;
// 2) 图片的网址
string imgUrl;
void Start ()
{
// 代码获取我们的RawImage
l_rawImage =
GameObject.Find("RawImage").GetComponent<RawImage> ();
// 网址赋值
imgUrl = "http://g.hiphotos.baidu.com/image/h%3D360/sign" +
"=07ad353ef403738dc14a0a24831ab073/08f790529822720eb2" +"5fa86479cb0a46f31fab9f.jpg";
// 开启下载图片的协程。
StartCoroutine (LoadImage ());
}
// 实现加载协程的方法
IEnumerator LoadImage()
{
// 根据连接下载
WWW www =new WWW (imgUrl);
// 等待WWW代码执行完毕之后后面的代码才会执行。
yield return www;
// 将下载的textrue在RawImage上展示
l_rawImage.texture = www.texture;
}
以上代码就能实现一个简单的图片下载和展示的功能了。
欢迎到CSDN学院观看我的Unity3D开发视频教程:http://edu.csdn.NET/lecturer/lecturer_detail?lecturer_id=107
(以上版权归蓝欧科技有限公司所有,任何单位或者个人不可以私自转载,如果有需有,请于蓝欧科技有限公司相关部门联系)
- Unity如何使用WWW类和协程完成图片、视频下载播放(一)
- Unity如何使用WWW类和协程完成图片、视频下载播放(一)
- Unity如何使用WWW类和协程完成图片、视频下载播放
- Unity如何使用WWW类和协程完成图片、视频下载播放
- Unity3D使用WWW类和协程完成图片、视频下载播放
- 2.19 WWW类和协程
- Unity 下载图片并保存(WWW)
- 如何在Unity中播放视频?
- Unity中如何利用一个协程和www类实现简单的图片下载
- 视频播放(一)
- 如何使用PictureBox播放视频
- 全景图(一):使用Unity完成水晶球纹理贴图
- unity www读取本地视频文件和外部视频文件 播放视频动画和视频声音
- unity-www下载
- unity www缓存图片
- vuforia6.2 在unity中图片识别播放视频流程
- unity播放音效(一)
- Unity播放视频方法(2种)
- P2P、P2C、O2O、B2C、B2B、C2C 的各个模式的区别
- redis的API对String、object、List、Map、Hash常用操作
- Google 的开源技术protobuf 简介与例子
- 关闭包含Iframe的弹出框
- phpMailer发送邮件
- Unity如何使用WWW类和协程完成图片、视频下载播放(一)
- Androidstudio不能连接手机测试,adb不能启动
- linux的nohup命令的用法。
- 如何用消息系统避免分布式事务?
- jQuery - 获得内容和属性
- 关于汇编中的AREA
- java获取WEB-INF目录下的文件
- leetcode 400. Nth Digit
- HTML5+NodeJs实现WebSocket即时通讯