Example #1
0
        private static void ApplyAssetBundleName(AssetManagement assetManagement, AssetInfoManifest manifest)
        {
            var projectFolders = ProjectFolders.Instance;

            var externalResourcesPath = projectFolders.ExternalResourcesPath;
            var shareResourcesPath    = projectFolders.ShareResourcesPath;

            var assetInfos = manifest.GetAssetInfos().ToArray();

            var count = assetInfos.Length;

            using (new AssetEditingScope())
            {
                for (var i = 0; i < count; i++)
                {
                    var assetInfo = assetInfos[i];

                    var apply = false;

                    if (assetInfo.IsAssetBundle)
                    {
                        var assetPath = ExternalResources.GetAssetPathFromAssetInfo(externalResourcesPath, shareResourcesPath, assetInfo);

                        apply = assetManagement.SetAssetBundleName(assetPath, assetInfo.AssetBundle.AssetBundleName);
                    }

                    if (apply)
                    {
                        EditorUtility.DisplayProgressBar("ApplyAssetBundleName", assetInfo.ResourcePath, (float)i / count);
                    }
                }
            }

            EditorUtility.ClearProgressBar();
        }
Example #2
0
        //----- method -----

        public void Initialize(AssetManagement assetManagement)
        {
            if (initialized)
            {
                return;
            }

            this.assetManagement = assetManagement;

            categoryNames = assetManagement.GetAllCategoryNames().ToList();

            initialized = true;
        }
Example #3
0
        //----- property -----

        //----- method -----

        public void Initialize(AssetManagement assetManagement, string externalResourcesPath, string shareResourcesPath)
        {
            if (initialized)
            {
                return;
            }

            this.assetManagement       = assetManagement;
            this.externalResourcesPath = externalResourcesPath;
            this.shareResourcesPath    = shareResourcesPath;

            BuildManageInfoViews();

            initialized = true;
        }
Example #4
0
        private void BuildContentsInfo(AssetManagement assetManagement)
        {
            assetContents = new Dictionary <string, AssetInfo[]>();

            var contents = new List <ContentsScrollView.Content>();

            var manageAssetPaths = assetManagement.GetManageAssetPaths(ManageInfo);

            ManagedAssetInfos = manageAssetPaths.Select(x => assetManagement.GetAssetInfo(x, ManageInfo)).ToArray();

            var assetBundleTargets = ManagedAssetInfos
                                     .Where(x => x.IsAssetBundle)
                                     .GroupBy(x => x.AssetBundle.AssetBundleName)
                                     .ToArray();

            foreach (var assetBundleTarget in assetBundleTargets)
            {
                var content = new ContentsScrollView.Content()
                {
                    label         = assetBundleTarget.Key,
                    isAssetBundle = true,
                };

                contents.Add(content);

                assetContents.Add(assetBundleTarget.Key, assetBundleTarget.ToArray());
            }

            var otherAssetTargets = ManagedAssetInfos
                                    .Where(x => !x.IsAssetBundle)
                                    .ToArray();

            foreach (var otherAssetTarget in otherAssetTargets)
            {
                var assetContent = new ContentsScrollView.Content()
                {
                    label         = otherAssetTarget.ResourcePath,
                    isAssetBundle = false,
                };

                contents.Add(assetContent);
            }

            contentsScrollView.Contents = contents.ToArray();
        }
Example #5
0
        private void Setup()
        {
            assetManagement = AssetManagement.Instance;
            assetManagement.Initialize();

            if (!string.IsNullOrEmpty(Prefs.selectionAssetGUID))
            {
                var assetPath = AssetDatabase.GUIDToAssetPath(Prefs.selectionAssetGUID);
                selectionAssetObject = AssetDatabase.LoadMainAssetAtPath(assetPath);

                UpdateViewInfo(selectionAssetObject);
            }

            clipboardIcon = EditorGUIUtility.IconContent("Clipboard");

            initialized = true;

            Repaint();
        }
Example #6
0
        private void Initialize(string externalResourcesPath, string shareResourcesPath)
        {
            // コンパイルが始まったら閉じる.
            CompileNotification.OnCompileStartAsObservable()
            .Subscribe(_ => Close())
            .AddTo(Disposable);

            // AssetManagement.

            assetManagement = AssetManagement.Instance;

            assetManagement.Initialize();

            // HeaderView.

            headerView = new HeaderView();

            headerView.Initialize(assetManagement);

            headerView.OnRequestRepaintAsObservable()
            .Subscribe(_ => Repaint())
            .AddTo(Disposable);

            headerView.OnChangeSelectCategoryAsObservable()
            .Subscribe(_ =>
            {
                manageAssetView.SetCategory(headerView.Category);
            })
            .AddTo(Disposable);

            // ManageAssetView.

            manageAssetView = new ManageAssetView();

            manageAssetView.Initialize(assetManagement, externalResourcesPath, shareResourcesPath);

            manageAssetView.OnRequestRepaintAsObservable()
            .Subscribe(_ => Repaint())
            .AddTo(Disposable);

            manageAssetView.SetCategory(headerView.Category);
        }
Example #7
0
        /// <summary> 定義されていないアセットバンドル名を削除 </summary>
        public static void DeleteUndefinedAssetBundleNames(AssetManagement assetManagement)
        {
            var assetBundleNames = assetManagement.GetAllAssetInfos()
                                   .Where(x => x.IsAssetBundle && x.AssetBundle != null)
                                   .Select(x => x.AssetBundle.AssetBundleName)
                                   .Distinct()
                                   .ToHashSet();

            var allAssetBundleNames = AssetDatabase.GetAllAssetBundleNames();

            foreach (var assetBundleName in allAssetBundleNames)
            {
                if (assetBundleNames.Contains(assetBundleName))
                {
                    continue;
                }

                AssetDatabase.RemoveAssetBundleName(assetBundleName, true);
            }
        }
Example #8
0
        //----- method -----

        public ManageInfoView(AssetManagement assetManagement, ManageInfo manageInfo, string externalResourcesPath, string shareResourcesPath, IgnoreType?ignoreType, bool open, bool edit)
        {
            this.ignoreType = ignoreType;

            var externalResourcesDir = externalResourcesPath + PathUtility.PathSeparator;
            var shareResourcesDir    = shareResourcesPath + PathUtility.PathSeparator;

            // 確定するまで元のインスタンスに影響を与えないようにコピーに対して編集を行う.
            ManageInfo = manageInfo.DeepCopy();

            IsOpen = open;
            IsEdit = edit;

            manageAssetPath = AssetDatabase.GUIDToAssetPath(manageInfo.guid);
            manageAsset     = AssetDatabase.LoadMainAssetAtPath(manageAssetPath);

            displayManageAssetPath = string.Empty;

            if (manageAssetPath.StartsWith(externalResourcesDir))
            {
                isShareAsset           = false;
                displayManageAssetPath = manageAssetPath.Substring(externalResourcesDir.Length, manageAssetPath.Length - externalResourcesDir.Length);
            }
            else if (manageAssetPath.StartsWith(shareResourcesDir))
            {
                isShareAsset           = true;
                displayManageAssetPath = manageAssetPath.Substring(shareResourcesDir.Length, manageAssetPath.Length - shareResourcesDir.Length);
            }

            contentsScrollView = new ContentsScrollView();

            contentsScrollView.OnRequestDetailViewAsObservable()
            .Subscribe(x => SetDetailView(x))
            .AddTo(Disposable);

            contentAssetsScrollView = new ContentAssetsScrollView(externalResourcesPath, shareResourcesPath);

            BuildContentsInfo(assetManagement);
        }
Example #9
0
        private static AssetInfoManifest GenerateManifest(AssetManagement assetManagement)
        {
            var projectFolders = ProjectFolders.Instance;

            var externalResourcesPath = projectFolders.ExternalResourcesPath;

            var allAssetInfos = assetManagement.GetAllAssetInfos().ToArray();

            // アセット情報を更新.
            var manifestPath = GetManifestPath(externalResourcesPath);
            var manifest     = ScriptableObjectGenerator.Generate <AssetInfoManifest>(manifestPath);

            Reflection.SetPrivateField(manifest, "assetInfos", allAssetInfos);

            UnityEditorUtility.SaveAsset(manifest);

            // アセットバンドル名設定.
            var importer = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(manifest));

            importer.assetBundleName = AssetInfoManifest.AssetBundleName;
            importer.SaveAndReimport();

            return(manifest);
        }