项目里面的很多资源都是从资源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下载资源(一)的更多相关文章

  1. Unity3D基础学习之AssetBundle 资源包创建与加载

    前几天做了AssentBundle的例子,遇到了问题,在论坛上问了三天都没人解答,最后在一个朋友的帮助下解决了.下面介绍AssentBundle. AssetBundles让你通过WWW类流式加载额外 ...

  2. C#项目学习 心得笔记本

    CacheDependency 缓存 //创建缓存依赖项 CacheDependency dep = new CacheDependency(fileName); //创建缓存 HttpContext ...

  3. webpack vuejs项目学习心得

    最近在做移动端的项目,最近webpack和vuejs很火,就想到了用vuejs webpack来构建我的项目 先了解了一些webpack的入门基础 http://webpack.github.io/d ...

  4. 开源项目live555学习心得

      推荐:伊朗美女找丈夫比找工作难女人婚前一定要看清三件事 × 登录注册   疯狂少男-IT技术的博客 http://blog.sina.com.cn/crazyboyzhaolei [订阅][手机订 ...

  5. 学习SpringBoot,整合全网各种优秀资源,SpringBoot基础,中间件,优质项目,博客资源等,仅供个人学习SpringBoot使用

    学习SpringBoot,整合全网各种优秀资源,SpringBoot基础,中间件,优质项目,博客资源等,仅供个人学习SpringBoot使用 一.SpringBoot系列教程 二.SpringBoot ...

  6. windows类书的学习心得(转载)

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  7. linux学习心得之目录树开端与/etc(图文)

    linux学习心得之目录树开端与/etc(图文) linux中“一切皆文件”,学习linux一年了,在学习过程中对目录树的一点心得,分享给大家,有不对的地方敬请斧正. 不多说了,先上图: 根目录: / ...

  8. windows类书的学习心得

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  9. Linux 桌面玩家指南:18. 我对 Docker 的使用的学习心得

    原文:Linux 桌面玩家指南:18. 我对 Docker 的使用的学习心得 特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记 ...

随机推荐

  1. struts——文件上传

    上传文件在一个系统当中是一个很常用的功能,也是一个比较重要的功能.今天我们就一起来学习一下Struts2如何上传文件. 今天讲的上传文件的方式有三种: 1,以字节为单位传输文件: 2,Struts2封 ...

  2. C# 创建Windows服务。服务功能:定时操作数据库 (转)

    C# 创建Windows服务.服务功能:定时操作数据库 一.创建window服务 1.新建项目-->选择Windows服务.默认生成文件包括Program.cs,Service1.cs 2.在S ...

  3. Xcode5和6上新建工程如何本地化启动页面

    建议阅读本篇文章前先具备iOS本地化的基本知识,Google中搜索“iOS本地化”,有成片的教程~~ 最近有个app需要支持英语.简体中文.繁体中文,由于启动页面上有文字,所以也不得不做下本地化处理. ...

  4. Qt相关问题

    1.  Qt编译中的error: cannot find -lGL和 error: collect2: error: ld returned 1 exit status 一般见于新安装的系统,马上就直 ...

  5. doT.js 声明

    // 模板引擎配置项 var tmplOptions = { evaluate: /\{\{([\s\S]+?\}?)\}\}/g, interpolate: /\{\{=([\s\S]+?)\}\} ...

  6. SQL Server 2008 geometry 数据类型

    摘自SQL Server 2008帮助 平面空间数据类型 geometry 是作为 SQL Server 中的公共语言进行时 (CLR) 数据类型实现的.此类型表示欧几里得(平面)坐标系中的数据. 注 ...

  7. C# 获取配置文件节点值

    <?xml version="1.0" encoding="utf-8" ?><configuration>  <appSetti ...

  8. Intellij Idea 创建Web项目入门(一)转

    Intellij Idea 创建Web项目入门(一) 相关软件: Intellij Idea14:http://pan.baidu.com/s/1nu16VyD JDK7:http://pan.bai ...

  9. 使用Spring JDBCTemplate简化JDBC的操作

    使用Spring JDBCTemplate简化JDBC的操作 接触过JAVA WEB开发的朋友肯定都知道Hibernate框架,虽然不否定它的强大之处,但个人对它一直无感,总感觉不够灵活,太过臃肿了. ...

  10. MVC 模型、视图、控制及其单入口文件的mvc的工作原理

         什么是mvc,mvc就是模型视图控制,模型就是model,在项目中负责数据库相关的操作,视图就是view ,负责页面的展示和数据的展示,控制就是controller ,负责中间的逻辑转换,数 ...