Exemple #1
0
    /// <summary>
    /// 加载AssetBundle打包信息
    /// </summary>
    private void loadAssetBundleBuildInfo()
    {
        // 确保之前加载的AB打包信息卸载彻底
        if (mAssetBundleBuildInfo != null)
        {
            Resources.UnloadAsset(mAssetBundleBuildInfo);
            mAssetBundleBuildInfo = null;
        }
        // AssetBundle打包信息比较特殊,在未加载完成前拿不到AB名字映射
        // 所以这里单独特殊加载,不走正常流程
        var         abpath = AssetBundlePath.GetABLoadFullPath(ResourceConstData.AssetBundleBuildInfoAssetName);
        AssetBundle ab     = null;

        ab = AssetBundle.LoadFromFile(abpath);
        if (ab != null)
        {
            mAssetBundleBuildInfo = ab.LoadAsset <AssetBundleBuildInfoAsset>(ResourceConstData.AssetBundleBuildInfoAssetName);
            mAssetBundleBuildInfo.init();
            ab.Unload(false);
            Debug.Log("AssetBundle打包信息文件加载成功!");
        }
        else
        {
            Debug.LogError($"找不到AssetBundle打包信息文件:{ResourceConstData.AssetBundleBuildInfoAssetName}");
        }
    }
Exemple #2
0
        /// <summary>
        /// 更新AssetBundle打包编译信息Asset
        /// </summary>
        /// <param name="buildinfolist"></param>
        /// <param name="abmanifest"></param>
        private void UpdateAssetBundleBuildInfoAsset(List <AssetBundleBuild> buildinfolist, Dictionary <string, AssetBundleBuildInfo> abbuildinfomap)
        {
            // Note: AssetBundle打包信息统一存小写,确保和AB打包那方一致
            var assetbundlebuildinfoassetrelativepath = $"Assets{ResourceConstData.AssetBundleBuildInfoAssetRelativePath}/{ResourceConstData.AssetBundleBuildInfoAssetName}.asset";
            var assetbundlebuildasset = AssetDatabase.LoadAssetAtPath <AssetBundleBuildInfoAsset>(assetbundlebuildinfoassetrelativepath);

            if (assetbundlebuildasset == null)
            {
                assetbundlebuildasset = new AssetBundleBuildInfoAsset();
                AssetDatabase.CreateAsset(assetbundlebuildasset, assetbundlebuildinfoassetrelativepath);
            }
            assetbundlebuildasset.AssetBuildInfoList.Clear();

            // Asset打包信息构建
            foreach (var bi in buildinfolist)
            {
                var abbi = new AssetBuildInfo();
                // 剔除后缀(默认采用无后缀形式加载,同目录同名不同类型采用泛型加载匹配)
                abbi.AssetPath     = bi.assetNames[0].Substring(0, bi.assetNames[0].Length - Path.GetExtension(bi.assetNames[0]).Length).ToLower();
                abbi.ABPath        = bi.assetBundleName.ToLower();
                abbi.ABVariantPath = bi.assetBundleVariant.ToLower();
                assetbundlebuildasset.AssetBuildInfoList.Add(abbi);
            }

            // AssetBundle打包信息构建
            assetbundlebuildasset.AssetBundleBuildInfoList.Clear();
            assetbundlebuildasset.AssetBundleBuildInfoList = abbuildinfomap.Values.ToList();

            EditorUtility.SetDirty(assetbundlebuildasset);
            AssetDatabase.SaveAssets();
        }