コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Addressable Asset System の BundledAssetGroupSchema.AssetBundleProviderType を変更するエディタ拡張

概要

使用例

using UnityEditor;

public static class Example
{
    [MenuItem( "Tools/Hoge" )]
    private static void Hoge()
    {
        var group = AddressableUtils.GetOrCreateGroup( "【グループ名】" );

        var bundledAssetGroupSchema = group.Schemas
                .OfType<BundledAssetGroupSchema>()
                .FirstOrDefault()
            ;

        var serializedType = new SerializedType
        {
            Value        = typeof( 【ResourceProviderBase を継承したクラス】 ),
            ValueChanged = true,
        };

        var type  = typeof( BundledAssetGroupSchema );
        var name  = "m_AssetBundleProviderType";
        var attr  = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
        var value = type.GetField( name, attr );

        value.SetValue( bundledAssetGroupSchema, serializedType );
    }
}