标签:style blog io ar color 使用 sp 文件 on
项目里面的许多资源都是从资源服务器加载的,这样子可以减小客户端的包大小。
所以我们需要一个专门的类来管理下载资源。
资源分很多类型,如: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 }
标签:style blog io ar color 使用 sp 文件 on
原文地址:http://www.cnblogs.com/dabiaoge/p/4134002.html