//加载Bundle的回调
 private void OnLoadingAssetBundle(int index, int count)
 {
     if (EventOnLoadingAssetBundle != null)
     {
         EventOnLoadingAssetBundle.Invoke(index, count);
     }
 }
        //加载Bundle配置信息
        public bool Load()
        {
            Clear();

            if (!File.Exists(m_ConfigurationPath))
            {
                return(false);
            }

            try
            {
                XmlDocument xmlDocument = new XmlDocument();
                xmlDocument.Load(m_ConfigurationPath);
                //获取各个节点
                XmlNode xmlRoot         = xmlDocument.SelectSingleNode("UnityGameFramework");
                XmlNode xmlCollection   = xmlRoot.SelectSingleNode("AssetBundleCollection");
                XmlNode xmlAssetBundles = xmlCollection.SelectSingleNode("AssetBundles");
                XmlNode xmlAssets       = xmlCollection.SelectSingleNode("Assets");

                XmlNodeList xmlNodeList = null;
                XmlNode     xmlNode     = null;
                XmlNode     xmlTemp     = null;
                int         count       = 0;

                //遍历 AssetBundle信息
                xmlNodeList = xmlAssetBundles.ChildNodes;
                count       = xmlNodeList.Count;
                for (int i = 0; i < count; i++)
                {
                    if (EventOnLoadingAssetBundle != null)
                    {
                        EventOnLoadingAssetBundle.Invoke(i, count);
                    }

                    //遍历每一个节点
                    xmlNode = xmlNodeList.Item(i);
                    if (xmlNode.Name != "AssetBundle")
                    {
                        continue;
                    }

                    //bundle名称
                    string assetBundleName = xmlNode.Attributes.GetNamedItem("Name").Value;
                    //变体名称
                    xmlTemp = xmlNode.Attributes.GetNamedItem("Variant");
                    string assetBundleVariant = xmlTemp != null ? xmlTemp.Value : null;
                    //加载类型
                    int assetBundleLoadType = 0;
                    xmlTemp = xmlNode.Attributes.GetNamedItem("LoadType");
                    if (xmlTemp != null)
                    {
                        int.TryParse(xmlTemp.Value, out assetBundleLoadType);
                    }
                    //是否打包
                    bool assetBundlePacked = false;
                    xmlTemp = xmlNode.Attributes.GetNamedItem("Packed");
                    if (xmlTemp != null)
                    {
                        bool.TryParse(xmlTemp.Value, out assetBundlePacked);
                    }
                    //资源组
                    xmlTemp = xmlNode.Attributes.GetNamedItem("ResourceGroups");
                    string[] assetBundleResourceGroups = xmlTemp != null?xmlTemp.Value.Split(',') : new string[0];

                    //添加
                    if (!AddAssetBundleInfo(assetBundleName, assetBundleVariant, (AssetBundleLoadType)assetBundleLoadType, assetBundlePacked, assetBundleResourceGroups))
                    {
                        string assetBundleFullName = assetBundleVariant != null?Utility.Text.Format("{0}.{1}", assetBundleName, assetBundleVariant) : assetBundleName;

                        Debug.LogWarning(Utility.Text.Format("Can not add AssetBundle '{0}'.", assetBundleFullName));
                        continue;
                    }
                }

                //遍历Assets信息
                xmlNodeList = xmlAssets.ChildNodes;
                count       = xmlNodeList.Count;
                for (int i = 0; i < count; i++)
                {
                    if (EventOnLoadingAsset != null)
                    {
                        EventOnLoadingAsset.Invoke(i, count);
                    }

                    xmlNode = xmlNodeList.Item(i);
                    if (xmlNode.Name != "Asset")
                    {
                        continue;
                    }

                    string assetGuid       = xmlNode.Attributes.GetNamedItem("Guid").Value;            //资源id
                    string assetBundleName = xmlNode.Attributes.GetNamedItem("AssetBundleName").Value; //资源Bundle名
                    xmlTemp = xmlNode.Attributes.GetNamedItem("AssetBundleVariant");
                    string assetBundleVariant = xmlTemp != null ? xmlTemp.Value : null;
                    if (!AssignAssetInfo(assetGuid, assetBundleName, assetBundleVariant))
                    {
                        string assetBundleFullName = assetBundleVariant != null?Utility.Text.Format("{0}.{1}", assetBundleName, assetBundleVariant) : assetBundleName;

                        Debug.LogWarning(Utility.Text.Format("Can not assign asset '{0}' to AssetBundle '{1}'.", assetGuid, assetBundleFullName));
                        continue;
                    }
                }

                if (EventOnLoadCompleted != null)
                {
                    EventOnLoadCompleted.Invoke();
                }

                return(true);
            }
            catch
            {
                File.Delete(m_ConfigurationPath);
                if (EventOnLoadCompleted != null)
                {
                    EventOnLoadCompleted.Invoke();
                }

                return(false);
            }
        }