Exemplo n.º 1
0
        private static void AddAddressGroup(AssetPackerConfig assetPackerConfig)
        {
            if (assetPackerConfig != null)
            {
                RemoveAddressGroup(assetPackerConfig);

                string[] assetPaths = AssetDatabaseUtility.FindAssets <AssetAddressConfig>();
                if (assetPaths == null || assetPaths.Length == 0)
                {
                    Debug.LogError("AssetPackUtil::AddAddressGroup->AssetAddressConfig is not found!");
                    return;
                }

                AssetPackerGroupData groupData = new AssetPackerGroupData()
                {
                    groupName = AddressGroupName,
                };
                AssetPackerAddressData addressData = new AssetPackerAddressData()
                {
                    assetAddress  = AssetConst.ASSET_ADDRESS_CONFIG_NAME,
                    assetPath     = assetPaths[0],
                    bundlePath    = AssetConst.ASSET_ADDRESS_BUNDLE_NAME,
                    bundlePathMd5 = MD5Crypto.Md5(AssetConst.ASSET_ADDRESS_BUNDLE_NAME).ToLower(),
                };
                groupData.assetFiles.Add(addressData);

                assetPackerConfig.groupDatas.Add(groupData);
            }
        }
Exemplo n.º 2
0
        public static AssetPackerConfig GetAssetPackerConfig()
        {
            AssetPackerConfig packerConfig = new AssetPackerConfig();

            AssetAddressGroup[] groups = AssetDatabaseUtility.FindInstances <AssetAddressGroup>();
            if (groups != null && groups.Length > 0)
            {
                foreach (var group in groups)
                {
                    AssetPackerGroupData groupData = new AssetPackerGroupData();
                    groupData.groupName      = group.groupName;
                    groupData.isMain         = group.isMain;
                    groupData.isPreload      = group.isPreload;
                    groupData.isNeverDestroy = group.isNeverDestroy;

                    groupData.assetFiles = GetAssetsInGroup(group);

                    packerConfig.groupDatas.Add(groupData);
                }
            }
            packerConfig.Sort();

            AddAddressGroup(packerConfig);

            return(packerConfig);
        }
Exemplo n.º 3
0
 private static void RemoveAddressGroup(AssetPackerConfig assetPackerConfig)
 {
     if (assetPackerConfig != null)
     {
         foreach (var group in assetPackerConfig.groupDatas)
         {
             if (group.groupName == AddressGroupName)
             {
                 assetPackerConfig.groupDatas.Remove(group);
                 break;
             }
         }
     }
 }
Exemplo n.º 4
0
        public static void SetAssetBundleNames(AssetPackerConfig assetPackerConfig, BundlePathFormatType bundlePathFormat, bool isShowProgressBar = false)
        {
            if (isShowProgressBar)
            {
                EditorUtility.DisplayProgressBar("Set Bundle Names", "", 0f);
            }

            List <AssetPackerAddressData> addressDatas = new List <AssetPackerAddressData>();

            assetPackerConfig.groupDatas.ForEach((groupData) =>
            {
                addressDatas.AddRange(groupData.assetFiles);
            });

            for (int i = 0; i < addressDatas.Count; ++i)
            {
                if (isShowProgressBar)
                {
                    EditorUtility.DisplayProgressBar("Set Bundle Names", addressDatas[i].assetPath, i / (float)addressDatas.Count);
                }

                string assetPath  = addressDatas[i].assetPath;
                string bundlePath = addressDatas[i].bundlePath;
                if (bundlePathFormat == BundlePathFormatType.MD5)
                {
                    bundlePath = addressDatas[i].bundlePathMd5;
                }

                AssetImporter ai = AssetImporter.GetAtPath(assetPath);
                ai.assetBundleName = bundlePath;

                if (Path.GetExtension(assetPath).ToLower() == ".spriteatlas")
                {
                    SetSpriteBundleNameByAtlas(assetPath, bundlePath);
                }
            }

            if (isShowProgressBar)
            {
                EditorUtility.ClearProgressBar();
            }

            AssetDatabase.SaveAssets();
        }
Exemplo n.º 5
0
        public static void PackAssetBundle(AssetPackerConfig packerConfig, BundleBuildConfig buildConfig)
        {
            IAssetBundlePacker bundlePacker = null;

            Type[] bundlePackerTypes = AssemblyUtility.GetDerivedTypes(typeof(IAssetBundlePacker));
            if (bundlePackerTypes != null && bundlePackerTypes.Length > 0)
            {
                bundlePacker = (IAssetBundlePacker)Activator.CreateInstance(bundlePackerTypes[0]);
            }

            if (bundlePacker == null)
            {
                Debug.LogError("AssetPackerUtil::PackAssetBundle->DoPackAssetBundle is null.");
                return;
            }

            if (string.IsNullOrEmpty(buildConfig.bundleOutputDir))
            {
                Debug.Log("AssetPackerUtil::PackAssetBundle->bundleOutputDir is null.");
                return;
            }

            string outputDir = $"{buildConfig.bundleOutputDir}/{buildConfig.buildTarget.ToString()}/assetbundles";

            if (buildConfig.cleanupBeforeBuild && Directory.Exists(outputDir))
            {
                Directory.Delete(outputDir, true);
            }
            if (!Directory.CreateDirectory(outputDir).Exists)
            {
                Debug.LogError("AssetPackUitl::PackAssetBundle->Folder is not found. dir = " + outputDir);
                return;
            }

            AssetBundleConfig bundleConfig = bundlePacker.PackAssetBundle(packerConfig, buildConfig, outputDir);
            var    json         = JsonConvert.SerializeObject(bundleConfig, Formatting.Indented);
            string jsonFilePath = $"{outputDir}/{AssetConst.ASSET_BUNDLE_CONFIG_NAME}";

            File.WriteAllText(jsonFilePath, json);
        }
Exemplo n.º 6
0
        private void OnEnable()
        {
            assetPackerConfig = AssetPackerUtil.GetAssetPackerConfig();

            foreach (var group in assetPackerConfig.groupDatas)
            {
                foreach (var data in group.assetFiles)
                {
                    if (!addressRepeatDataDic.TryGetValue(data.assetAddress, out List <AssetPackerAddressData> dataList))
                    {
                        dataList = new List <AssetPackerAddressData>();
                        addressRepeatDataDic.Add(data.assetAddress, dataList);
                    }
                    dataList.Add(data);
                }
            }

            if (PlayerSettingsUtility.HasScriptingDefineSymbol(ASSET_BUNDLE_SYMBOL))
            {
                runMode = RunMode.AssetBundle;
            }
        }