zoukankan      html  css  js  c++  java
  • 【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;
                }
            }
        }
       
    }
    








  • 相关阅读:
    BestCoder6 1002 Goffi and Squary Partition(hdu 4982) 解题报告
    codeforces 31C Schedule 解题报告
    codeforces 462C Appleman and Toastman 解题报告
    codeforces 460C. Present 解题报告
    BestCoder3 1002 BestCoder Sequence(hdu 4908) 解题报告
    BestCoder3 1001 Task schedule(hdu 4907) 解题报告
    poj 1195 Mobile phones 解题报告
    二维树状数组 探索进行中
    codeforces 460B Little Dima and Equation 解题报告
    通过Sql语句控制SQLite数据库增删改查
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4183851.html
Copyright © 2011-2022 走看看