カスタムの Unity アクティビティを拡張する使用例は、Android プレイヤーを起動する際にコマンドライン引数を渡すことです。使用可能なコマンドライン引数については、コマンドライン引数 を参照してください。
カスタムアクティビティで起動時のコマンドライン引数を指定するには、以下の手順を実行します。
String UnityPlayerActivity.updateUnityCommandLineArguments(String cmdLine)
メソッドをオーバーライドします。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() {
// Google Pixel デバイスで Vulkan を使用
if (Build.MANUFACTURER.equals("Google") && Build.MODEL.startsWith("Pixel"))
return true;
else
return false;
}
private boolean preferES2() {
// Android 5.1 以前を使うデバイスで OpenGL ES 2.0 を使用
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1)
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 if (preferES2())
return appendCommandLineArgument(cmdLine, "-force-gles20");
else
return cmdLine; // Unity に Player 設定に基づくグラフィックス API を選択させます
}
@Override protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
}
カスタムアクティビティ以外にも、次の方法でコマンドライン引数を指定できます。
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