Version: 2023.1
언어: 한국어
커스텀 활동 생성
GameActivity 애플리케이션 엔트리 포인트

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 다이얼로그에서 Launch Flags를 통해 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

커스텀 활동 생성
GameActivity 애플리케이션 엔트리 포인트