【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 使用$标记 ...
随机推荐
- Ajax发送Post请求
Ajax发送post请求与发送get请求大致类似.以下看详细实例.首先看JSP显示页面: <form action="servlet/LoginServlet" method ...
- 获取对象类型(swift)
获取对象类型(swift) by 伍雪颖 let date = NSDate() let name = date.dynamicType println(name) let string = &quo ...
- VS2008找不到MFC90d.dll错误解决方法
问题是在更新嵌入的清单文件时发生的,由于FAT32的原因而未能更新嵌入的清单文件,于是我们有如下两种解决方法: (1)不启用增量链接.在项目的“属性|配置属性|链接器|常规”中的“启用增量链接”选择“ ...
- Unity 读取CSV与Excel
前几天看到我们在游戏中需要动态加载某些角色的游戏策划值,关于这个问题怎么解决呢?其实办法很多种,归根到底,就是数据的读取.我们可以想到的存储数据的载体有很多.例如:txt,xml,csv,excel. ...
- 用CSS画五角星
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- //NSUserDeafult 图片的保存与读取
//NSUserDeafult保存图片数据到本地 -(void)saveImage:(UIImage *)image{ NSData* data=[NSKeyedArchiver archivedDa ...
- Qt调用外部程序QProcess通信
mainwindow.cpp文件: -------------------------------- #include "mainwindow.h" #include " ...
- 被sjy带刷题#1
笔记[问题描述]给定一个长度为m的序列a,下标编号为1~m.序列的每个元素都是1~n的整数.定义序列的代价为 你现在可以选择两个数x和y,并将序列a中所有的x改成y.x可以与y相等.请求出序列 ...
- C++程序设计实践指导1.12数组中数据线性变换改写要求实现
改写要求1:分别用指针pa.pb代替数组 改写要求2:从键盘输入data元素 元素个数任意,输入0结束 #include <cstdlib> #include <iostream&g ...
- JavaScript中的作用域链原理
执行环境 作用域链的形成与执行环境(Execution Environment)相关,在JavaScript当中,产生执行环境有如下3中情形: 1 进入全局环境 2 调用eval函数 3 调用func ...