【Unity】リフレクションでUnityのBuildAndRunを呼び出す
概要
以前Unityで自前のビルド処理を書かなければならないことがあり、 その際は、自前でビルド後のアプリケーション実行処理(BuildAndRunのRunの部分)も書いていたのですが、 そもそもリフレクションで良くねという話だったので、そのメモです...
環境
- Unity2018.2.21f1
実装サンプル(C#)
[MenuItem("ReflectionTest/BuildAndRun")] public static void BuildAndRun() { // Unityバージョンによってメソッド名は変わる可能性があります... var reflectionMethodName = "CallBuildMethods"; var reflectionFlags = BindingFlags.NonPublic | BindingFlags.Static; var buildAndRun = typeof(BuildPlayerWindow).GetMethod(reflectionMethodName, reflectionFlags); if(buildAndRun != null){ // UnityEngine.Objectとの間違いに注意. buildAndRun.Invoke(null, new System.Object[]{ true, BuildOptions.AutoRunPlayer | BuildOptions.StrictMode }); } }
参考資料
- https://anchan828.github.io/editor-manual/web/decompile_dll.html
- https://docs.microsoft.com/ja-jp/dotnet/api/system.type.getmethod?view=netframework-4.8
- https://docs.microsoft.com/ja-jp/dotnet/api/system.reflection.methodbase.invoke?view=netframework-4.8
- https://docs.microsoft.com/ja-jp/dotnet/api/system.type.invokemember?view=netframework-4.8#System_Type_InvokeMember_System_String_System_Reflection_BindingFlags_System_Reflection_Binder_System_Object_System_ObjectSystem_Reflection_ParameterModifierSystem_Globalization_CultureInfo_System_String___
- http://blog.livedoor.jp/kotani08/archives/17570449.html