Esempio n. 1
0
        /// <summary>
        /// 加载ab包并添加依赖项
        /// </summary>
        /// <param name="bundleItem">加载目标包</param>
        private void LoadBundleDependeceSync(AssetBundleItem bundleItem)
        {
            string[] strDependeceArray = ABManifestLoader.Instance.GetAssetBundleDependce(bundleItem.BundleName);
            foreach (var depend in strDependeceArray)
            {
                // 添加依赖项
                bundleItem.abRelation.AddDependence(depend);
                AssetBundleItem dependBundleItem = _AssetBundlePool.GetBundleItem(depend);
                if (dependBundleItem != null && _AssetBundlePool.BundleIsLoaded(depend))
                {
                    // 添加被依赖项
                    dependBundleItem.abRelation.AddReference(bundleItem.BundleName);
                    continue;
                }

                if (dependBundleItem == null)
                {
                    dependBundleItem = _AssetBundlePool.AddBundleItem(depend);
                }
                dependBundleItem.BundleLoadStatus = BundleLoadStatus.LOADING;
                // 添加被依赖项
                dependBundleItem.abRelation.AddReference(bundleItem.BundleName);
                LoadBundleDependeceSync(dependBundleItem);
            }

            bundleItem.LoadAssetBundleSync();
        }