コガネブログ

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

【Unity】Addressable Asset System の AddressablesImpl.hasStartedInitialization をリフレクションで false にする方法

概要

var addressablesType              = typeof( Addressables );
var assembly                      = addressablesType.Assembly;
var addressablesImplType          = assembly.GetType( "UnityEngine.AddressableAssets.AddressablesImpl" );
var addressablesImplField         = addressablesType.GetField( "m_Addressables", BindingFlags.Static | BindingFlags.NonPublic );
var addressablesImpl              = addressablesImplField.GetValue( null );
var hasStartedInitializationField = addressablesImplType.GetField( "hasStartedInitialization", BindingFlags.Instance | BindingFlags.NonPublic );

hasStartedInitializationField.SetValue( addressablesImpl, false );