Example #1
0
        //データをバージョンアップする(Eidtor上のみ使用可能)
        public int EditorVersionUpAssetBundle(AssetBundleManifest manifest, UnityEditor.BuildTarget buildTarget)
        {
            int    count          = 0;
            string buildTargetKey = AssetBundleHelper.BuildTargetToBuildTargetFlag(buildTarget).ToString();
            ConvertFileInfoDictionary oldInfoList;

            FileLists.TryGetValue(buildTargetKey, out oldInfoList);

            ConvertFileInfoDictionary newInfoList = new ConvertFileInfoDictionary(this, buildTargetKey);

            foreach (string assetBundleName in manifest.GetAllAssetBundles())
            {
                ConvertFileInfo info;
                if (oldInfoList != null && oldInfoList.TryGetValue(assetBundleName, out info))
                {
                    if (info.VersionUp(manifest))
                    {
                        ++count;
                    }
                }
                else
                {
                    info = new ConvertFileInfo(assetBundleName, manifest, newInfoList);
                    ++count;
                }
                newInfoList.Add(info.Name, info);
            }
            FileLists.Remove(newInfoList.Key);
            FileLists.Add(newInfoList.Key, newInfoList);
            return(count);
        }
        //アセットバンドルのビルド
        void BuildAssetBundles(FileIOManager fileIOManager)
        {
            if (buildMode == AssetBundleBuildMode.None)
            {
                return;
            }

            //アセットバンドルをプラットフォーム別にビルド
            List <BuildTarget> buildTargets = new List <BuildTarget>();

            switch (buildMode)
            {
            case AssetBundleBuildMode.OnlyEditor:                    //エディタ上のみ
                buildTargets.Add(AssetBundleHelper.BuildTargetFlagToBuildTarget(AssetBundleHelper.EditorAssetBundleTarget()));
                break;

            case AssetBundleBuildMode.AllPlatform:                    //全プラットフォーム
            {
                buildTargets = AssetBundleHelper.BuildTargetFlagsToBuildTargetList(buildTargetFlags);
            }
            break;

            default:
                break;
            }

            MainAssetInfo        inputDirAsset = new MainAssetInfo(this.ResourcesDirectory);
            List <MainAssetInfo> assets        = GetAssetBudleList(inputDirAsset);

            RenameAssetBundles(inputDirAsset.AssetPath, assets);
            AssetBundleBuild[] builds = ToAssetBundleBuilds(assets);
            if (builds.Length <= 0)
            {
                return;
            }


            foreach (BuildTarget buildTarget in buildTargets)
            {
                string outputPath = FilePathUtil.Combine(OutputPath, AssetBundleHelper.BuildTargetToBuildTargetFlag(buildTarget).ToString());
                //出力先のディレクトリを作成
                if (!Directory.Exists(outputPath))
                {
                    Directory.CreateDirectory(outputPath);
                }
                //アセットバンドルを作成
                AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles(outputPath, builds, buildOptions, buildTarget);
                Debug.Log("BuildAssetBundles to " + buildTarget.ToString());
                if (isOutputLog)
                {
                    WriteManifestLog(manifest, outputPath);
                }
            }
        }
        //アセットバンドルマニフェストのロード
        IEnumerator LoadAssetBundleManifestAsync(bool fromCache, Action onFailed)
        {
            if (Strage == StrageType.Local)
            {
                //ローカルなら必要ない
                yield break;
            }

            // マニフェストファイルをロードする
            // マニフェストファイルは
            // 「ルートパス/プラッフォーム名にある
            if (fromCache)
            {
                yield return(AssetFileManager.GetInstance().AssetBundleInfoManager.LoadCacheManifestAsync(
                                 GetDynamicStrageRoot(),
                                 AssetBundleHelper.RuntimeAssetBundleTarget().ToString(),
                                 //onComplete
                                 () =>
                {
                },
                                 //onFailed
                                 () =>
                {
                    onFailed();
                }
                                 ));
            }
            else
            {
                yield return(AssetFileManager.GetInstance().AssetBundleInfoManager.DownloadManifestAsync(
                                 FilePathUtil.Combine(GetDynamicStrageRoot(), this.RootResourceDir + "_Root"), // GetDynamicStrageRoot(),
                                 this.RootResourceDir + "_Root",                                               // AssetBundleHelper.RuntimeAssetBundleTarget().ToString(),
                                 //onComplete
                                 () =>
                {
                    Debug.Log("[AdvEngineStarter] DownloadManifestAsync Success!!");
                },
                                 //onFailed
                                 () =>
                {
                    onFailed();
                }
                                 ));
            }
        }
Example #4
0
        //アセットバンドルマニフェストのロード
        IEnumerator LoadAssetBundleManifestAsync(bool fromCache, Action onFailed)
        {
            if (Strage == StrageType.Local)
            {
                //ローカルなら必要ない
                yield break;
            }

            // マニフェストファイルをロードする
            // マニフェストファイルは
            // 「ルートパス/プラッフォーム名にある
            if (fromCache)
            {
                yield return(AssetFileManager.GetInstance().AssetBundleInfoManager.LoadCacheManifestAsync(
                                 GetDynamicStrageRoot(),
                                 AssetBundleHelper.RuntimeAssetBundleTarget().ToString(),
                                 //onComplete
                                 () =>
                {
                },
                                 //onFailed
                                 () =>
                {
                    onFailed();
                }
                                 ));
            }
            else
            {
                yield return(AssetFileManager.GetInstance().AssetBundleInfoManager.DownloadManifestAsync(
                                 GetDynamicStrageRoot(),
                                 AssetBundleHelper.RuntimeAssetBundleTarget().ToString(),
                                 //onComplete
                                 () =>
                {
                },
                                 //onFailed
                                 () =>
                {
                    onFailed();
                }
                                 ));
            }
        }
Example #5
0
        //ルートパスを取得
        string GetDynamicStrageRoot()
        {
            switch (Strage)
            {
            case StrageType.Server:
            case StrageType.ServerAndLocalScenario:
            case StrageType.LocalAndServerScenario:
                return(FilePathUtil.Combine(this.ServerUrl, AssetBundleHelper.RuntimeAssetBundleTarget().ToString()));

            case StrageType.StreamingAssets:
            case StrageType.StreamingAssetsAndLocalScenario:
                string root = FilePathUtil.Combine(this.RootResourceDir, AssetBundleHelper.RuntimeAssetBundleTarget().ToString());
                return(FilePathUtil.ToStreamingAssetsPath(root));

            default:
                Debug.LogError("UnDefine");
                return("");
            }
        }
        public void LoadInitFileList(int version)
        {
            string        dir = ResourceDir;
            bool          useConvertFileList     = ResourceLoadType == LoadType.Server ? useConvertFileListOnServer : useConvertFileListOnLocal;
            bool          useAssetBundleFileList = ResourceLoadType == LoadType.Server ? useAssetBundleListOnServer : useAssetBundleListOnLocal;
            List <string> pathList = new List <string>();

            if (useConvertFileList)
            {
                string path = FilePathUtil.Combine(dir, FilePathUtil.GetDirectoryNameOnly(ResourceDir + "/") + ExtensionUtil.ConvertFileList);
                pathList.Add(path);
            }
            if (useAssetBundleFileList)
            {
                string AssetBundleTarget = AssetBundleHelper.RuntimeAssetBundleTraget().ToString();
                string assetBundlePath   = FilePathUtil.Combine(AssetBundleTarget, AssetBundleTarget + ExtensionUtil.ConvertFileList);
                string path = FilePathUtil.Combine(dir, assetBundlePath);
                pathList.Add(path);
            }
            AssetFileManager.LoadInitFileList(pathList, version);
        }
Example #7
0
        //ファイルのパスから、ファイル情報を取得
        public bool TryGetValue(string filePath, AssetFileEncodeType encodeType, out ConvertFileInfo info)
        {
            info = null;
            switch (encodeType)
            {
            case AssetFileEncodeType.AlreadyEncoded:
                if (!FilePathUtil.IsUnderDirectory(filePath, DirectoryPath))
                {
                    return(false);
                }
                string fileKey = FilePathUtil.RemoveDirectory(filePath, DirectoryPath);
                foreach (var files in FileLists.Values)
                {
                    if (files.TryGetValue(fileKey, out info))
                    {
                        return(true);
                    }
                }
                return(false);

            case AssetFileEncodeType.AssetBundle:
                string assetName   = FilePathUtil.GetFileNameWithoutExtension(filePath).ToLower();
                string keyPlatform = AssetBundleHelper.RuntimeAssetBundleTraget().ToString();
                ConvertFileInfoDictionary infoList;
                if (FileLists.TryGetValue(keyPlatform, out infoList))
                {
                    if (infoList.TryGetValue(assetName, out info))
                    {
                        return(true);
                    }
                }
                return(false);

            default:
                return(false);
            }
        }
Example #8
0
        //アセットバンドルのビルド
        void BuildAssetBundles(string outPutDirectoryPath, FileIOManager fileIOManager, AssetFileManagerSettings settings, bool isOutputLog)
        {
            if (assetBundleBuildMode == AssetBundleBuildMode.None)
            {
                return;
            }

            //アセットバンドルをプラットフォーム別にビルド
            List <BuildTarget> buildTargets = new List <BuildTarget>();

            switch (assetBundleBuildMode)
            {
            case AssetBundleBuildMode.OnlyEditor:                    //エディタ上のみ
                buildTargets.Add(EditorUserBuildSettings.activeBuildTarget);
                break;

            case AssetBundleBuildMode.AllPlatform:                    //全プラットフォーム
            {
                buildTargets = AssetBundleHelper.BuildTargetFlagsToBuildTargetList(buildTargetFlags);
            }
            break;

            default:
                break;
            }

            List <MainAssetInfo> assets = GetAssetBudleList(settings);

            RenameAssetBundles(assets);
            AssetBundleBuild[] builds = ToAssetBundleBuilds(assets);
            if (builds.Length <= 0)
            {
                return;
            }


            foreach (BuildTarget buildTarget in buildTargets)
            {
                string outputPath = FilePathUtil.Combine(outPutDirectoryPath, AssetBundleHelper.BuildTargetToBuildTargetFlag(buildTarget).ToString());
                //出力先のディレクトリを作成
                if (!Directory.Exists(outputPath))
                {
                    Directory.CreateDirectory(outputPath);
                }
                //アセットバンドルを作成
                AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles(outputPath, builds, BuildAssetBundleOptions.None, buildTarget);

                //アセットバンドルの情報をバージョンアップ
                AdvFileListConverter converter = new AdvFileListConverter(outputPath, fileIOManager, settings);
                converter.VersionUp(
                    (x) =>
                {
                    int count = x.ConvertFileList.EditorVersionUpAssetBundle(manifest, buildTarget);
                    Debug.Log("" + count + " AsseBundle version up to target " + buildTarget.ToString());
                });
                if (isOutputLog)
                {
                    converter.WriteLog(true);
                }
            }
        }