Version: 5.6
JAR 플러그인
Android용 Native(C++) 플러그인

UnityPlayerActivity Java 코드의 확장

Unity Android 애플리케이션을 개발할 때 플러그인을 사용하여 표준 UnityPlayerActivity 클래스(Android에서 Unity 플레이어의 기본 Java 클래스로 Unity iOS의 AppController.mm과 유사)를 확장할 수 있습니다. 애플리케이션은 Android OS와 Unity Android 애플리케이션 간의 모든 기본 상호 작용을 오버라이드할 수 있습니다.

디폴트 작업을 오버라이드하기 위해서는 두 가지 단계가 필요합니다.

  • UnityPlayerActivity에서 파생된 새로운 작업을 생성합니다.

  • Android 매니페스트를 수정하여 새로운 액티비티를 엔트리 포인트로 삼으십시오.

이것을 달성하는 가장 쉬운 방법은 프로젝트를 익스포트한 다음, Android Studio에서 UnityPlayerActivity 클래스를 수정하는 것입니다.

새로운 작업 코드로 플러그인을 만들고 Unity 프로젝트에 추가하려면 다음 단계를 수행해야합니다.

  1. UnityPlayerActivity를 확장합니다. UnityPlayerActivity.java 파일은 Mac에서는 /Applications/Unity/Unity.app/Contents/PlaybackEngines/AndroidPlayer/src/com/unity3d/player 에서, Windows에서는 C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\src\com\unity3d\player 에서 찾을 수 있습니다. UnityPlayerActivity를 확장하려면 Unity에 포함된 classes.jar를 찾으십시오. PlaybackEngines/AndroidPlayer/Variations/mono 또는 il2cpp/Development 또는 Release/Classes/로 부르는 하위 폴더의 설치폴더에서 찾을 수 있습니다. 설치폴더는 보통 Windows에서는 C:\Program Files\Unity\Editor\Data에 있고, Mac에서는 /Applications/Unity에 있습니다. 그런 다음 classes.jar를 새 작업을 컴파일하는 데 사용되는 클래스 경로에 추가합니다. 액티비티 소스 파일을 컴파일하여 JAR 또는 AAR 패키지에 패키지화하고 프로젝트 폴더에 복사합니다.

  2. 새 Android 매니페스트를 생성하여 새 작업을 애플리케이션의 엔트리 포인트로 설정합니다. AndroidManifest.xml 파일을 프로젝트의 Assets/Plugins/Android 폴더에 둡니다.

다음은 UnityPlayerActivity 파일의 예제입니다.

OverrideExample.java:
package com.company.product;
import com.unity3d.player.UnityPlayerActivity;
import android.os.Bundle;
import android.util.Log;

public class OverrideExample extends UnityPlayerActivity {
  protected void onCreate(Bundle savedInstanceState) {
    // call UnityPlayerActivity.onCreate()
    super.onCreate(savedInstanceState);
    // print debug message to logcat
    Log.d("OverrideActivity", "onCreate called!");
  }
  public void onBackPressed()
  {
    // instead of calling UnityPlayerActivity.onBackPressed() we just ignore the back button event
    // super.onBackPressed();
  }
}
And this is what the corresponding AndroidManifest.xml could look like:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.company.product">
  <application android:icon="@drawable/app_icon" android:label="@string/app_name">
    <activity android:name=".OverrideExample"
             android:label="@string/app_name"
             android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
  </application>
</manifest>



JAR 플러그인
Android용 Native(C++) 플러그인