Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9543

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

$
0
0

前提

やったこと

  • エディタ拡張で、デフォルトグループ内のサブアセットをルートに展開します。
  • Addressable Assets Systemを完全に理解する ~ Addressablesウィンドウから設定する」で紹介されていたスクリプトが最近のバージョンには整合しないようでした(Addressables 1.7.5で確認)ので、書き直しました。
  • なお、アセットがルートになくてもアクセスはできるので、ルートに展開する必然性はありません。
  • また、このスクリプトは、デフォルトグループだけを対象にしています。
Assets/~/Editor/MoveToRoot.cs
usingSystem.Collections.Generic;usingUnityEditor;usingUnityEditor.AddressableAssets;usingUnityEngine;publicstaticclassAddressableAssetsUtil{// サブエントリをルートへ展開して空になったフォルダを削除[UnityEditor.MenuItem("Assets/Addressables/MoveSubEntryToRoot")]publicstaticvoidMoveSubEntryToRoot(){varentriesCount=0;varassetsCount=0;varsettings=AddressableAssetSettingsDefaultObject.Settings;varentries=newList<UnityEditor.AddressableAssets.Settings.AddressableAssetEntry>(settings.DefaultGroup.entries);varassets=newList<UnityEditor.AddressableAssets.Settings.AddressableAssetEntry>{};foreach(varentryinentries){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(varassetinassets){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})");}}

公式ドキュメント


Viewing all articles
Browse latest Browse all 9543

Trending Articles