【Unity3d】【项目学习心得】从资源服务器下载资源(一)
来源:互联网 发布:地铁车站结构设计软件 编辑:程序博客网 时间:2024/05/15 08:40
项目里面的许多资源都是从资源服务器加载的,这样子可以减小客户端的包大小。
所以我们需要一个专门的类来管理下载资源。
资源分很多类型,如: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; } } } }
0 0
- 【Unity3d】【项目学习心得】从资源服务器下载资源(一)
- 【Unity3d】【项目学习心得】从资源服务器下载资源(一)
- 【Unity3d】【项目学习心得】从资源服务器下载资源(一)
- 【Unity3d】【项目学习心得】从资源服务器下载资源(二)
- 【Unity3d】【项目学习心得】从资源服务器下载资源(三)
- 【Unity3d】【项目学习心得】从资源服务器下载资源(二)
- 【Unity3d】【项目学习心得】从资源服务器下载资源(三)
- 【Unity3d】【项目学习心得】从资源服务器下载资源(二)
- 【Unity3d】【项目学习心得】从资源服务器下载资源(三)
- 从服务器下载资源一
- 从服务器下载资源二
- 从服务器下载资源三
- c# 从服务器下载资源
- Unity3d 资源断点下载
- Unity3d热更新全书-资源加载(一):从AssetBundle说起
- java下载服务器资源
- Unity3D官方资源完全下载
- Unity3d 通过网页下载资源
- Android中给View绑定多个OnClickListener接口
- 关于项目以war包方式部署,文件下载找不到路径
- 序列划分-使其最大值最小化
- Cesiumjs 引擎架构
- Android 开启闪光灯做手电筒
- 【Unity3d】【项目学习心得】从资源服务器下载资源(一)
- 武汉大学职称评定认定、计算机类中文核心期刊
- 习题(12-5) 行程长度编码
- 人机交互之字符编码
- 手机外置sd与内置sd怎样切换
- notepadd++安装zen coding插件
- Android Studio 使用 aar
- 性格测试
- 页面布局