首页 > 代码库 > Unity3d 从资源服务器下载资源(一)
Unity3d 从资源服务器下载资源(一)
项目里面的许多资源都是从资源服务器加载的,这样子可以减小客户端的包大小。
所以我们需要一个专门的类来管理下载资源。
资源分很多类型,如:json表,txt文件,image文件,二进制文件,UIAtlas图集,AssetBundle等。
所以,首先创建一个管理资源文件类型的类LoadFileType。 其中文件类型可以用枚举来表示,也可以用类成员常量来表示。
此处使用类成员常量:
1 using UnityEngine; 2 using System.Collections; 3 4 5 namespace AssemblyCSharp { 6 public class LoadFileType { 7 8 public const string IMAGE = "image"; 9 // unity3d文件格式10 public const string UNITY3D = "unity3d";11 // 模块资源打包格式12 public const string MODULE_RESOURCE = "moduleResource";13 14 public const string BINARY = "binary";15 16 public const string TXT = "txt";17 18 public const string JSON = "json";19 // fbx打包的assetBundle格式文件20 public const string FBX = "fbx";21 22 public const string AUDIO = "audio";23 // 字体文件24 public const string FONT = "font";25 // 二进制文件(用于后台更新)26 public const string BINARY_BG = "binary_bg";27 28 }29 }
接下来需要创建一个类,用来管理单个下载任务,unity3d下载都是使用WWW来下载,我们要创建的类需要具有以下功能:
① 使用WWW下载资源。
② 具备委托回调接口,方便调用这个类的对象能够接收到反馈,初步回调需要:下载完成后的回调,出现错误的回调,下载进程的回调。
③ 超时设置,超过一定时间则被认定下载任务失败。
④ 除此之外,还需记录本次下载任务的URL、以及所下载资源的fileType。
根据以上条件,这个类大致为:
// LoadReques.cs
1 /** 2 * 下载任务 3 * create by chensh 2014.10.27 10:31 4 */ 5 6 using UnityEngine; 7 using System.Collections; 8 using System.Collections.Generic; 9 10 namespace AssemblyCSharp {11 public class LoadRequest {12 13 public delegate void DownCompleteDelegate(LoadParam param);14 public delegate void ErrorDelegate(LoadRequest request);15 public delegate void ProcessDelegate(float processValue, int fileTotalSize = 0);16 17 18 public DownCompleteDelegate completeFunction;19 public ErrorDelegate errorFunction;20 public ProcessDelegate processFunction;21 22 23 public const int TIME_OUT_FRAMES = 300;24 private int _loadTotalFrames = 0; // 加载的总帧数25 public bool isTimeOut = false;26 public bool alreadyDeal = false;27 28 public string requestURL;29 public string fileType;30 public WWW wwwObject = null;31 public List<object> customParams = new List<object>();32 public int priotiry = LoadPriority.NORMAL;33 34 35 public LoadRequest(string url, object customParam = null, string type = "", DownCompleteDelegate completeFunc = null, ErrorDelegate errorFunc = null, ProcessDelegate processFunc = null) {36 requestURL = url;37 fileType = type;38 39 completeFunction = completeFunc;40 if (completeFunc != null)41 customParams.Add(customParam);42 if (errorFunc != null) 43 errorFunction = errorFunc;44 if (processFunc != null) 45 processFunction = processFunc;46 47 wwwObject = new WWW(requestURL);48 wwwObject.threadPriority = ThreadPriority.Normal;49 }50 51 public int loadTotalFrames {52 get {53 return _loadTotalFrames;54 }55 set {56 _loadTotalFrames = value;57 if (_loadTotalFrames > LoadRequest.TIME_OUT_FRAMES)58 isTimeOut = true;59 }60 }61 }62 63 }
Unity3d 从资源服务器下载资源(一)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。