【Unity3d】【项目学习心得】从资源server下载资源(一)
项目里面的很多资源都是从资源server载入的,这样子能够减小client的包大小。
所以我们须要一个专门的类来管理下载资源。
资源分非常多类型,如:json表,txt文件,image文件,二进制文件,UIAtlas图集,AssetBundle等。
所以,首先创建一个管理资源文件类型的类LoadFileType。 当中文件类型能够用枚举来表示,也能够用类成员常量来表示。
此处使用类成员常量:
using UnityEngine;
using System.Collections; namespace AssemblyCSharp {
public class LoadFileType { public const string IMAGE = "image";
// unity3d文件格式
public const string UNITY3D = "unity3d";
// 模块资源打包格式
public const string MODULE_RESOURCE = "moduleResource"; public const string BINARY = "binary"; public const string TXT = "txt"; public const string JSON = "json";
// fbx打包的assetBundle格式文件
public const string FBX = "fbx"; public const string AUDIO = "audio";
// 字体文件
public const string FONT = "font";
// 二进制文件(用于后台更新)
public const string BINARY_BG = "binary_bg"; }
}
接下来须要创建一个类,用来管理单个下载任务,unity3d下载都是使用WWW来下载,我们要创建的类须要具有下面功能:
① 使用WWW下载资源。
② 具备托付回调接口,方便调用这个类的对象可以接收到反馈,初步回调须要:下载完毕后的回调,出现错误的回调,下载进程的回调。
③ 超时设置,超过一定时间则被认定下载任务失败。
④ 除此之外,还需记录本次下载任务的URL、以及所下载资源的fileType。
依据以上条件,这个类大致为:
// LoadReques.cs
/**
* 下载任务
* create by chensh 2014.10.27 10:31
*/ using UnityEngine;
using System.Collections;
using System.Collections.Generic; namespace AssemblyCSharp {
public class LoadRequest { public delegate void DownCompleteDelegate(LoadParam param);
public delegate void ErrorDelegate(LoadRequest request);
public delegate void ProcessDelegate(float processValue, int fileTotalSize = 0); public DownCompleteDelegate completeFunction;
public ErrorDelegate errorFunction;
public ProcessDelegate processFunction; public const int TIME_OUT_FRAMES = 300;
private int _loadTotalFrames = 0; // 载入的总帧数
public bool isTimeOut = false;
public bool alreadyDeal = false; public string requestURL;
public string fileType;
public WWW wwwObject = null;
public List<object> customParams = new List<object>();
public int priotiry = LoadPriority.NORMAL; public LoadRequest(string url, object customParam = null, string type = "", DownCompleteDelegate completeFunc = null, ErrorDelegate errorFunc = null, ProcessDelegate processFunc = null) {
requestURL = url;
fileType = type; completeFunction = completeFunc;
if (completeFunc != null)
customParams.Add(customParam);
if (errorFunc != null)
errorFunction = errorFunc;
if (processFunc != null)
processFunction = processFunc; wwwObject = new WWW(requestURL);
wwwObject.threadPriority = ThreadPriority.Normal;
} public int loadTotalFrames {
get {
return _loadTotalFrames;
}
set {
_loadTotalFrames = value;
if (_loadTotalFrames > LoadRequest.TIME_OUT_FRAMES)
isTimeOut = true;
}
}
} }
【Unity3d】【项目学习心得】从资源server下载资源(一)的更多相关文章
- Unity3D基础学习之AssetBundle 资源包创建与加载
前几天做了AssentBundle的例子,遇到了问题,在论坛上问了三天都没人解答,最后在一个朋友的帮助下解决了.下面介绍AssentBundle. AssetBundles让你通过WWW类流式加载额外 ...
- C#项目学习 心得笔记本
CacheDependency 缓存 //创建缓存依赖项 CacheDependency dep = new CacheDependency(fileName); //创建缓存 HttpContext ...
- webpack vuejs项目学习心得
最近在做移动端的项目,最近webpack和vuejs很火,就想到了用vuejs webpack来构建我的项目 先了解了一些webpack的入门基础 http://webpack.github.io/d ...
- 开源项目live555学习心得
推荐:伊朗美女找丈夫比找工作难女人婚前一定要看清三件事 × 登录注册 疯狂少男-IT技术的博客 http://blog.sina.com.cn/crazyboyzhaolei [订阅][手机订 ...
- 学习SpringBoot,整合全网各种优秀资源,SpringBoot基础,中间件,优质项目,博客资源等,仅供个人学习SpringBoot使用
学习SpringBoot,整合全网各种优秀资源,SpringBoot基础,中间件,优质项目,博客资源等,仅供个人学习SpringBoot使用 一.SpringBoot系列教程 二.SpringBoot ...
- windows类书的学习心得(转载)
原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
- linux学习心得之目录树开端与/etc(图文)
linux学习心得之目录树开端与/etc(图文) linux中“一切皆文件”,学习linux一年了,在学习过程中对目录树的一点心得,分享给大家,有不对的地方敬请斧正. 不多说了,先上图: 根目录: / ...
- windows类书的学习心得
原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
- Linux 桌面玩家指南:18. 我对 Docker 的使用的学习心得
原文:Linux 桌面玩家指南:18. 我对 Docker 的使用的学习心得 特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记 ...
随机推荐
- XTU OJ 1209 Alice and Bob 2014(嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛)
Problem Description The famous "Alice and Bob" are playing a game again. So now comes the ...
- ASP.NET中时间的绑定和格式化
1.Eval和Bind的区别 绑定表达式 <%# Eval("字段名") %> <%# Bind("字段名") %> 区别 1.e ...
- Dalvik虚拟机的启动过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8885792 在Android系统中,应用程序进 ...
- NET基础课-- 类型基础(NET之美)
1.类型:值类型 引用类型. 分类依据:类型在内存的分配方式.值类型在堆栈,引用类型在托管堆. 名词:栈--所有变量都会被分配在栈上,只不过值类型直接含有数据,引用类型含有一个指向托管堆对象的地址. ...
- 编译错误“The run destination My Mac 64-bit is not valid for Running the scheme '***',解决办法
1. iOS APP Project or Mac APP Project编译错误提示: “The run destination My Mac 64-bit is not valid for Ru ...
- Java—Integer类
Integer类 Integer 类在对象中包装了一个基本类型 int 的值.Integer 类型的对象包含一个 int 类型的字段. 该类提供了多个方法,能在 int 类型和 String 类型之间 ...
- uva 10763 Foreign Exchange <"map" ,vector>
Foreign Exchange Your non-profit organization (iCORE - international Confederation of Revolver Enthu ...
- poj3581Sequence(后缀数组)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Sequence Time Limit: 5000MS Memory Limi ...
- 从C到C++的升级
C++的语言类型 C++是静态的强类型语言. 静态语言:数据类型在编译期间检查,因此在写程序时需要声明变量的类型 强类型语言:强调数据类型,不同的数据类型间的转换需要进行强制类型转换 C与C++的关系 ...
- C# 创建execl文件 并且填充数据
第一步:引用文件 using NPOI.HSSF.UserModel;using System.Data;using CTUClassLibrary;using System.IO;using NPO ...