コガネブログ

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

【Unity】Firebase Analytics のデバッグモードを有効化・無効化する MenuItem を管理するクラス

ソースコード

using System.Diagnostics;
using UnityEditor;

namespace Kogane
{
    /// <summary>
    /// Firebase Analytics のデバッグモードを有効化・無効化する MenuItem を管理するクラス
    /// </summary>
    internal static class FirebaseAnalyticsMenuItem
    {
        //================================================================================
        // 定数
        //================================================================================
        private const string MENU_ITEM_ROOT = "Kogane/Firebase Analytics/デバッグモード/";

        //================================================================================
        // 関数(static)
        //================================================================================
        /// <summary>
        /// Firebase Analytics のデバッグモードを有効化します
        /// </summary>
        [MenuItem( MENU_ITEM_ROOT + "有効化" )]
        private static void EnableDebugMode()
        {
            SetDebugMode( "【パッケージ名】" );
        }

        /// <summary>
        /// Firebase Analytics のデバッグモードを無効化します
        /// </summary>
        [MenuItem( MENU_ITEM_ROOT + "無効化" )]
        private static void DisableDebugMode()
        {
            SetDebugMode( ".none." );
        }

        /// <summary>
        /// Firebase Analytics のデバッグモードを設定します
        /// </summary>
        private static void SetDebugMode( string packageName )
        {
            var fileName  = AndroidAdbPath.Path;
            var arguments = $"shell setprop debug.firebase.analytics.app {packageName}";

            var startInfo = new ProcessStartInfo
            {
                FileName               = fileName,
                UseShellExecute        = false,
                RedirectStandardOutput = true,
                CreateNoWindow         = true,
                Arguments              = arguments,
            };

            var process = Process.Start( startInfo );
            process!.WaitForExit();

            UnityEngine.Debug.Log( $"{fileName} {arguments}" );
        }
    }
}

依存するパッケージ