扩展自定义 Unity 活动的一个常见用例是在启动 Android Player 时传递命令行参数。有关可用命令行参数的详细信息,请参阅命令行参数。
要在自定义活动中指定启动命令行参数,请按照以下步骤操作:
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() {
// 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);
}
}
除了通过自定义活动指定命令行参数外,您还可以通过以下方式实现:
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