码迷,mamicode.com
首页 > 编程语言 > 详细

Unity3d 从资源服务器下载资源(一)

时间:2014-12-01 00:44:46      阅读:302      评论:0      收藏:0      [点我收藏+]

标签: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 }

 

Unity3d 从资源服务器下载资源(一)

标签:style   blog   io   ar   color   使用   sp   文件   on   

原文地址:http://www.cnblogs.com/dabiaoge/p/4134002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!