public void LoadResourceAsync <T>(string resName, OnResLoad <T> resLoader) where T : UnityEngine.Object
        {
            if (m_pathToResourceMap.ContainsKey(resName))
            {
                m_resourceRefCout[resName] += 1;

                resLoader(resName, (T)m_pathToResourceMap[resName]);
            }
            else
            {
                StartCoroutine(DoLoadResourceAsync(resName, resLoader));
            }
        }
        private IEnumerator DoLoadResourceAsync <T>(string resName, OnResLoad <T> resLoader) where T : UnityEngine.Object
        {
            ResourceRequest req = Resources.LoadAsync(resName);

            yield return(req);

            if (!m_pathToResourceMap.ContainsKey(resName))
            {
                m_pathToResourceMap.Add(resName, req.asset);
                m_resourceRefCout[resName] = 1;
            }
            else
            {
                m_resourceRefCout[resName] += 1;
            }

            resLoader(resName, (T)req.asset);
        }
 public void GetResourceAsync <T>(string resName, OnResLoad <T> resLoader) where T : UnityEngine.Object
 {
     m_loader.LoadResourceAsync <T>(resName, resLoader);
 }