Version: 2023.1
言語: 日本語
カスタムアクティビティの作成
The GameActivity application entry point

Android プレイヤーのコマンドライン引数を指定する

カスタムの Unity アクティビティを拡張する使用例は、Android プレイヤーを起動する際にコマンドライン引数を渡すことです。使用可能なコマンドライン引数については、コマンドライン引数 を参照してください。

カスタムアクティビティで起動時のコマンドライン引数を指定するには、以下の手順を実行します。

  1. カスタムアクティビティを作成 し、アプリケーションのエントリーポイントとして設定します。
  2. カスタムアクティビティで、String UnityPlayerActivity.updateUnityCommandLineArguments(String cmdLine) メソッドをオーバーライドします。
  3. メソッド内で、cmdLine 引数を起動引数と連結して、結果を返します。 重要: cmdLine 引数は空の文字列または null である可能性があるため、コードがこれらの可能な値を処理できるように気を付けてください。

以下の例は、現在のデバイスに基づいてグラフィックス API を選択するために、起動引数を指定する方法を示しています。

package com.company.product;
import com.unity3d.player.UnityPlayerActivity;
import android.os.Bundle;
import android.os.Build;

public class OverrideExample extends UnityPlayerActivity {
    private boolean preferVulkan() {
        // Use Vulkan on Google Pixel devices
        if (Build.MANUFACTURER.equals("Google") && Build.MODEL.startsWith("Pixel"))
            return true;
        else
            return false;
    }

    private String appendCommandLineArgument(String cmdLine, String arg) {
        if (arg == null || arg.isEmpty())
            return cmdLine;
        else if (cmdLine == null || cmdLine.isEmpty())
            return arg;
        else
            return cmdLine + " " + arg; 
    } 

    @Override protected String updateUnityCommandLineArguments(String cmdLine)
    {
        if (preferVulkan())
            return appendCommandLineArgument(cmdLine, "-force-vulkan");
        else
            return cmdLine; // let Unity pick the Graphics API based on PlayerSettings
    }

    @Override protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
    }
}

コマンドライン引数を指定する他の方法

カスタムアクティビティ以外にも、次の方法でコマンドライン引数を指定できます。

  • Android Studio: Android Studio でプロジェクトを開くと、Run/Debug Configurations ダイアログ の起動フラグを介して Unity に起動コマンドライン引数を渡すことができます。
  • Android Debug Bridge (adb) 経由: 以下のコードを使用して、adb を介して Android アプリケーションを起動することで、コマンドライン引数を渡すことができます。
adb shell am start -n "<package_name>/<activity_name>" -e unity <command_line_arguments>

以下の例は、-systemallocator コマンドライン引数をアプリケーションに渡す方法を示しています。

adb shell am start -n "com.Company.MyGame/com.unity3d.player.UnityPlayerActivity" -e unity -systemallocator

カスタムアクティビティの作成
The GameActivity application entry point