Unity ゲーム用 Memory Advice API スタートガイド

このガイドでは、Unity 用 Memory Advice プラグインを使用して、Memory Advice API を Unity ゲームに統合する方法について説明します。

要件

このプラグインは次の環境で使用できます。

  • Unity 2019 と Android NDK r19

  • Unity 2020 と Android NDK r19

  • Unity 2021 と Android NDK r21

  • Unity 2022 と Android NDK r23

上記以外のバージョンの Unity と Android NDK を使用している場合、予期しない問題が発生する可能性があります。Unity のインストールで使用する NDK バージョンを確認するには、Unity の Android 環境設定ガイドをご覧ください。

プラグインをダウンロードする

プラグインをダウンロードします。

プラグインをインポートする

このプラグインは、プロジェクトにインポートできる Unity パッケージです。プラグインをインポートするには、[Assets] > [Import Package] > [Custom Package] をクリックし、ダウンロードした .unitypackage ファイルを選択します。Unity プロジェクトを開いて .unitypackage ファイルをダブルクリックしてもかまいません。

ライブラリを使用する

このセクションでは、ライブラリの使用方法について説明します。

ライブラリを初期化する

アプリの起動時に 1 回、ライブラリを初期化する必要があります。 そのために、次のコードをプロジェクトに追加します。

void Start()
{
    MemoryAdviceErrorCode errorCode = MemoryAdvice.Init();
    if(errorCode == MemoryAdviceErrorCode.Ok)
    {
        Debug.Log("Memory advice init successfully");
    }
}

メモリ状態についてポーリングする

任意の間隔でライブラリをポーリングすることにより、アプリのメモリ状態を取得できます。ライブラリをポーリングする必要がある場合は、常に MemoryAdvice_getMemoryState 関数を使用してください。

MemoryState memoryState = MemoryAdvice.GetMemoryState();
switch (memoryState)
{
    case MemoryState.Ok:
        //The application can safely allocate memory.
        break;
    case MemoryState.ApproachingLimit:
        // The application should minimize memory allocation.
        break;
    case  MemoryState.Critical:
        // The application should free memory as soon as possible
        // until the memory state changes.
        break;
}

ウォッチャーを設定する

ウォッチャーをセットアップして Memory Advice API を登録することもできます。これにより、メモリ状態が上限に近づいた際、またはひっ迫した際に、ウォッチャー関数が呼び出されるようにできます(ただし OK 状態では呼び出されません)。たとえば、次のコードでは、ウォッチャーを作成して 2 秒ごとに Memory Advice API 通知をリクエストします。

MemoryAdviceErrorCode errorCode = MemoryAdvice.RegisterWatcher(2000,
        new MemoryWatcherDelegateListener((MemoryState state) =>
    {
        switch (memoryState)
        {
            case MemoryState.ApproachingLimit:
                // The application should minimize memory allocation.
                break;
            case  MemoryState.Critical:
                // The application should free memory as soon as possible
                // until the memory state changes.
                break;
        }
    })
);

if(errorCode == MemoryAdviceErrorCode.Ok)
{
    Debug.Log("Memory Advice watcher registered successfully");
}

次のステップ

Unity サンプル プロジェクトをダウンロードします。このサンプル プロジェクトでは、メモリの割り当てと解放を行うシンプルな UI を用意し、Memory Advice API を使用してメモリの状態をモニターします。

Memory Advice API の概要で、参考情報および問題とフィードバックについてご確認ください。