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(); }
//----- method ----- public void Initialize(AssetManagement assetManagement) { if (initialized) { return; } this.assetManagement = assetManagement; categoryNames = assetManagement.GetAllCategoryNames().ToList(); initialized = true; }
//----- 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; }
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(); }
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(); }
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); }
/// <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); } }
//----- 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); }
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); }