コード例 #1
0
 /// <summary>
 /// 真正的请求资源
 /// </summary>
 /// <param name="respath">资源AB路径</param>
 /// <param name="completehandler">加载完成上层回调</param>
 /// <param name="loadtype">资源加载类型</param>
 /// <param name="loadmethod">资源加载方式</param>
 protected override void realRequestResource(string respath, LoadResourceCompleteHandler completehandler, ResourceLoadType loadtype = ResourceLoadType.NormalLoad, ResourceLoadMethod loadmethod = ResourceLoadMethod.Sync)
 {
     // 如果资源已经加载完成,直接返回
     if (mAllLoadedResourceInfoMap[ResourceLoadType.NormalLoad].ContainsKey(respath))
     {
         completehandler(mAllLoadedResourceInfoMap[ResourceLoadType.NormalLoad][respath]);
         if (loadtype > ResourceLoadType.NormalLoad)
         {
             updateLoadedResourceInfoLoadType(respath, ResourceLoadType.NormalLoad, loadtype);
         }
     }
     else if (mAllLoadedResourceInfoMap[ResourceLoadType.Preload].ContainsKey(respath))
     {
         completehandler(mAllLoadedResourceInfoMap[ResourceLoadType.Preload][respath]);
         if (loadtype > ResourceLoadType.Preload)
         {
             updateLoadedResourceInfoLoadType(respath, ResourceLoadType.Preload, loadtype);
         }
     }
     else if (mAllLoadedResourceInfoMap[ResourceLoadType.PermanentLoad].ContainsKey(respath))
     {
         completehandler(mAllLoadedResourceInfoMap[ResourceLoadType.PermanentLoad][respath]);
     }
     else
     {
         AssetDatabaseLoader adloader = createADLoader(respath);
         //暂时默认都当同步加载,不支持异步模拟
         adloader.LoadMethod = loadmethod;
         adloader.LoadType   = loadtype;
         adloader.LoadResourceCompleteCallBack     = completehandler;
         adloader.LoadSelfResourceCompleteNotifier = onResourceLoadCompleteNotifier;
         mResourceRequestTaskMap.Add(respath, adloader);
         adloader.startLoad();
     }
 }
コード例 #2
0
    /// <summary> 资源加载完成通知(用于更新资源加载管理) /// </summary>
    /// <param name="adl">资源加载任务信息</param>
    private void onResourceLoadCompleteNotifier(AssetDatabaseLoader adl)
    {
        var abname = adl.AssetBundlePath;

        if (mResourceRequestTaskMap.ContainsKey(abname))
        {
            mResourceRequestTaskMap.Remove(abname);
            mAllLoadedResourceInfoMap[adl.LoadType].Add(abname, adl.ResourceInfo);
            //资源加载数据统计
            if (ResourceLoadAnalyse.Singleton.ResourceLoadAnalyseSwitch)
            {
                ResourceLoadAnalyse.Singleton.addResourceLoadedTime(abname);
            }
        }
        else
        {
            ResourceLogger.logErr(string.Format("收到不在加载任务请求队列里的AB:{0}加载完成回调!", abname));
        }
    }