public void Load(AssetLoadRequest req) { string url = req.url; if (loaded.TryGetValue(url, out var info)) { //已经加载完了 info.unusedFrame = 0; req.assetHandle = new AssetHandle(info.asset, refMgr.GetOrCreateRef(info.asset)); req.Complete(); return; } var webReq = req.GetData <UnityWebRequest>("__webRequest"); if (webReq == null) { webReq = UnityWebRequest.Get(url); } var opt = webReq.SendWebRequest(); opt.completed += OnRequestCompelted; if (loadingReqs.TryGetValue(url, out var reqs)) { reqs.Add(req); } else { reqs = new List <AssetLoadRequest>(); reqs.Add(req); loadingReqs[url] = reqs; } }
bool DoLoadAsync(AssetLoadRequest req) { if (!req.isUrl) { var handle = GetLoadHandle(req.path); return(handle.LoadAsync(req)); } else { var group = req.GetData <string>("__webGroup"); if (webLoaders.TryGetValue(group, out var loader)) { loader.Load(req); return(true); } return(false); } }