public ResourceLoadHandle LoadAsync(ulong pathHash, System.Type type, int priority) { ResourceLoadHandle loadHandle = new ResourceLoadHandle(); ResourceData resourceData = _GetResourceData(pathHash); if (resourceData == null) { ResourceLoadRequest request = m_loader.TryGetRequest(pathHash); if (request == null) { request = new ResourceLoadRequest(pathHash, type, priority); request.OnLoadDone += _OnRequestDone; m_loader.PushRequst(request); } else { Log.Assert(request.type == type); } request.AddLoadHandle(loadHandle); } else { Log.Assert(resourceData.type == type); resourceData.AddRef(); loadHandle.isDone = true; loadHandle.asset = resourceData.asset; } return(loadHandle); }
private void _OnRequestDone(RequestBase <ResourceData> requestBase) { ResourceLoadRequest request = requestBase as ResourceLoadRequest; if (request == null) { Log.Error("[ResourceDataManager]Invalid request."); return; } ResourceData resourceData = request.asset as ResourceData; if (resourceData == null) { Log.Error("[ResourceDataManager]Invalid resource data."); return; } _AddResourceData(resourceData); }