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);
        }