//加载指定ab包名的ab包
        public AssetBundle LoadAssetBundle(string abName)
        {
            AssetBundleItem abItem = null;
            uint            crc    = CrcHelper.StringToCRC32(abName); //AB包名字创建crc

            if (!m_assetBundleItemDict.TryGetValue(crc, out abItem) || abItem == null)
            {
                AssetBundle assetBundle = null;
                string      abFullPath  = ABPathConfig.AssetBundleBuildTargetPath + "/" + abName;
                if (File.Exists(abFullPath))
                {
                    assetBundle = AssetBundle.LoadFromFile(abFullPath);
                }
                if (assetBundle == null)
                {
                    Debug.Log("Load AssetBundle Error: " + abFullPath);
                    return(null);
                }
                abItem             = m_assetBundleItemPool.Spawn(true);
                abItem.assetBundle = assetBundle;
                abItem.refCount++;
                m_assetBundleItemDict.Add(crc, abItem);
            }
            else
            {
                abItem.refCount++;
            }
            return(abItem.assetBundle);
        }
        //卸载指定ab包名的ab包
        public void UnLoadAssetBundle(string abName)
        {
            AssetBundleItem abItem = null;
            uint            crc    = CrcHelper.StringToCRC32(abName);

            if (m_assetBundleItemDict.TryGetValue(crc, out abItem) && abItem != null)
            {
                abItem.refCount--;
                if (abItem.refCount <= 0 && abItem.assetBundle != null)
                {
                    abItem.assetBundle.Unload(true);
                    abItem.Reset();
                    m_assetBundleItemPool.Recycle(abItem);
                    m_assetBundleItemDict.Remove(crc);
                }
            }
        }