LoginSignup
0
1

More than 3 years have passed since last update.

簡単リモートアセット(Unity Addressable Asset System)を試してみた (その2)

Posted at

前提

やったこと

  • エディタ拡張で、デフォルトグループ内のサブアセットをルートに展開します。
  • Addressable Assets Systemを完全に理解する ~ Addressablesウィンドウから設定する」で紹介されていたスクリプトが最近のバージョンには整合しないようでした(Addressables 1.7.5で確認)ので、書き直しました。
  • なお、アセットがルートになくてもアクセスはできるので、ルートに展開する必然性はありません。
  • また、このスクリプトは、デフォルトグループだけを対象にしています。
Assets/~/Editor/MoveToRoot.cs
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.AddressableAssets;
using UnityEngine;

public static class AddressableAssetsUtil {

    // サブエントリをルートへ展開して空になったフォルダを削除
    [UnityEditor.MenuItem ("Assets/Addressables/MoveSubEntryToRoot")]
    public static void MoveSubEntryToRoot () {
        var entriesCount = 0;
        var assetsCount = 0;
        var settings = AddressableAssetSettingsDefaultObject.Settings;
        var entries = new List<UnityEditor.AddressableAssets.Settings.AddressableAssetEntry>  (settings.DefaultGroup.entries);
        var assets = new List<UnityEditor.AddressableAssets.Settings.AddressableAssetEntry> { };
        foreach (var entry in entries) {
            entry.GatherAllAssets (assets, false, true, true);
            if (assets.Count > 0 && entry.MainAsset.GetType () == typeof (UnityEditor.DefaultAsset)) {
                entriesCount++;
                Debug.Log ($"MoveSubEntryToRoot: entry {entriesCount}: {entry.address}");
                foreach (var asset in assets) {
                    assetsCount++;
                    Debug.Log ($"MoveSubEntryToRoot: asset {assetsCount}: {asset.address}");
                    settings.MoveEntry (asset, entry.parentGroup);
                    if (asset.address.StartsWith ("Assets/")) {
                        asset.address = asset.address.Remove (0, 7);
                    }
                }
                assets.Clear ();
                settings.RemoveAssetEntry (entry.guid);
            }
        }
        AssetDatabase.Refresh (); // アセットを更新
        Debug.Log ($"MoveSubEntryToRoot: done (entries: {entriesCount}, assets: {assetsCount})");
    }

}

公式ドキュメント

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1