指定 Android Player 的命令行参数
Specify startup command-line arguments to pass to Unity.
阅读时间3 分钟最后更新于 1 个月前
扩展自定义 Unity 活动的一个常见用例是在启动 Android Player 时传递命令行参数。有关可用命令行参数的详细信息,请参阅命令行参数。
要在自定义活动中指定启动命令行参数,请按照以下步骤操作:
- 创建自定义活动并将其设置为应用程序的入口点。
- 在自定义活动中,重载 方法。
String UnityPlayerActivity.updateUnityCommandLineArguments(String cmdLine) - 在该方法中,将 参数与您自己的启动参数拼接,然后返回结果。重要提示:
cmdLine参数可能为空字符串或 null,因此请确保代码处理这些可能的值。cmdLine
以下示例展示了如何根据当前设备选择图形 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 对话框中的 Launch Flags 将启动命令行参数传递给 Unity。
- 通过 Android Debug Bridge (adb) 指定:您可以通过以下代码使用 adb 启动 Android 应用程序,并传递命令行参数。
adb shell am start -n "<package_name>/<activity_name>" -e unity <command_line_arguments>
以下示例展示了如何将 命令行参数传递给应用程序。
-systemallocatoradb shell am start -n "com.Company.MyGame/com.unity3d.player.UnityPlayerActivity" -e unity -systemallocator