ARDKロギングの使用

ARDKには、ほとんどのARDKクラスに対してロギング機能が搭載されています。AR体験の開発中にロギングを有効にすると、デバッグや、ARDKの内部ステートの診断、ARDKオブジェクトのライフサイクルの把握などに役立ちます。

ARDKロギングを有効にする

注釈

デバッグのロギングを行うと、パフォーマンスに影響を及ぼす可能性のあるログメッセージが多数生成される可能性があるため、アプリのリリースバージョンをビルドする前にARDK_DEBUGを削除してください。

ARDKのロギングを有効にして開発するにはまず、デバッグレベルのロギングを有効にするARDK_DEBUGシンボルを定義します。Edit(編集) > Project Settings(プロジェクト設定) > Player(プレイヤー) の順に移動し、Other Settings(その他の設定) パネルで Script Compilation(スクリプトのコンパイル) までスクロールします。Scripting Define Symbols(スクリプトの定義シンボル)+ を押し、 ARDK_DEBUG を追加します。

次に、プロジェクト内のいずれかのスクリプトの初期化コードで、 ARLog を使用して ARLog.EnableLogFeature() を呼び出します。通常、スクリプトの Awake() または Start() メソッドに追加します。Unityの開発ビルドを使用しており、開発ビルドでロギングを行う場合は、 ARLog.EnableLogFeature() の呼び出しを #if DEVELOPMENT_BUILD の条件付きでラップすることができます。

ログ情報を生成するARDKの名前空間またはクラスを指定する必要があります。たとえば、Nianticの名前空間のすべてのクラスや名前空間のログを生成する場合は、 ARLog.EnableLogFeature("Niantic") を呼び出します。

次の例では、 Niantic.ARDK.VirtualStudio 名前空間のクラスに対してロギングを有効にします。

using Niantic.ARDK.Utilities.Logging;

public class MySceneScript : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        // Enable ARDK logging
        ARLog.EnableLogFeature("Niantic.ARDK.VirtualStudio");

        // ...other initialization code
    }
}

ログ情報をキャプチャする

ロギングが有効になっていると、ARDKのデフォルトのログハンドラによって、UnityのDebug.Logにメッセージが送信されます。モックモードまたはリモートモードでアプリを実行すると、UnityコンソールにARDKのログメッセージが表示されます。

#Niantic.ARDK.VirtualStudio._VirtualStudioManager#: VirtualStudioMaster Initialized.
UnityEngine.Debug:Log (object)
#Niantic.ARDK.AR.Configuration.ARSessionChangesCollector#: Registered Niantic.ARDK.Extensions.ARDepthManager as ARConfigChanger.
UnityEngine.Debug:Log (object)
...

カスタムのログハンドラにログメッセージを出力する必要がある場合は、 IARLogHandler の実装を作成し、カスタムのログハンドラのインスタンスを ARLog.Loghandler に設定する必要があります。次の例は、シンプルなカスタムのログハンドラです。

using Niantic.ARDK.Utilities.Logging;

public class CustomLogHandler : IARLogHandler
{
    // Gets the singleton instance of this log handler.
    public static readonly CustomLogHandler Instance = new CustomLogHandler();

    private CustomLogHandler()
    {
    }

    // ...implement Debug(), Warn(), Release(), Error() as needed...
}

ロギングを有効にしたコードで、カスタムのログハンドラを設定します。

void Start()
{
    // Set custom log handler
    ARLog.LogHandler = CustomLogHandler.Instance;
    // Enable ARDK logging
    ARLog.EnableLogFeature("Niantic");
}