Создание настраиваемой операции
Чтобы расширить операцию по умолчанию Unity, создайте собственную операцию и установите ее в качестве точки входа приложения. Процесс выполнения такой операции выглядит следующим образом:
-
Создание новой операции, расширяющей
UnityPlayerActivityclass.Примечание: Если вы создаете новую деятельность с точкой входа приложения GameActivity, вам нужно расширить
UnityPlayerGameActivityкласс. Убедитесь, что вы расширяете именно тот класс, который соответствует точке входа приложения, заданной в Настройки плеера. Создать плагин для доставки новой операции в окончательное приложение Unity Android.
Переопределите манифест приложения Android, чтобы установить новую
activityв качестве точки входа приложения.
После этого можно реализовать в операции настраиваемое поведение для управления взаимодействием между Unity и Android.
Создание новой операции
Чтобы создать новую операцию:
В папке Ассеты создайте новый файл Java (
.java) или Kotlin (.kt).-
В новом файле создайте класс, расширяющий
UnityPlayerActivity.Примечание: если вы используете точку входа приложения GameActivity, необходимо создать класс, расширяющий
UnityPlayerGameActivityclass. В новом классе переопределите различные базовые методы Activity, чтобы задать нужное поведение своей activity. Дополнительные сведения см. в документации Android Деятельность документация.
Пример деятельности
В следующем примере кода показано примерное действие, которое переопределяет несколько функций.
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) {
// Calls UnityPlayerActivity.onCreate()
super.onCreate(savedInstanceState);
// Prints debug message to Logcat
Log.d("OverrideActivity", "onCreate called!");
}
public void onBackPressed()
{
// Instead of calling UnityPlayerActivity.onBackPressed(), this example ignores the back button event
// super.onBackPressed();
}
}
Пример действия с точкой входа приложения GameActivity
В следующем примере кода показано примерное действие с точкой входа приложения GameActivity, которое переопределяет несколько функций.
package com.company.product;
import com.unity3d.player.UnityPlayerGameActivity;
import android.os.Bundle;
import android.util.Log;
public class OverrideExample extends UnityPlayerGameActivity {
protected void onCreate(Bundle savedInstanceState) {
// Calls UnityPlayerGameActivity.onCreate()
super.onCreate(savedInstanceState);
// Prints debug message to Logcat
Log.d("OverrideActivity", "onCreate called!");
}
public void onBackPressed()
{
// Instead of calling UnityPlayerGameActivity.onBackPressed(), this example ignores the back button event
// super.onBackPressed();
}
}
Создание плагина для операции
Чтобы использовать настраиваемую операцию для приложения Unity Android, необходимо создать плагин, содержащий операцию. Операции написаны на языке Java или Kotlin, что означает, что необходимо использовать один из следующих типов плагинов:
Если вы хотите создать настраиваемую операцию для одного проекта, используйте плагины Java и Kotlin. Чтобы создать плагины, поместите исходные файлы непосредственно в папку Ассеты вашего проекта.
Если вы хотите повторно использовать операцию в нескольких проектах или распространять ее среди других людей, используйте плагины Android Archive (AAR) или JAR. Управление одним файлом плагина AAR или JAR облегчает предоставление функциональности в нескольких проектах.
Используйте плагин библиотеки Android во время разработки плагина, а затем скомпилируйте его в плагин архива Android, когда завершите реализацию, захотите использовать его в нескольких проектах или распространить его среди других людей.
После создания разъема добавьте в него файл операции.
Задать новую операцию в качестве точки входа приложения
После создания операции и добавления ее в подраздел можно установить ее в качестве точки входа в приложение. Для этого выполните следующие действия: изменить манифест Android и установить name атрибут элемент деятельности на имя класса вашей пользовательской activity.
Следующий пример манифеста Android показывает, как это сделать:
<?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="com.YourPackage.name.OverrideExample"
android:theme="@style/UnityThemeSelector"
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>
Следующий пример манифеста Android показывает, как это сделать для настраиваемой операции с точкой входа приложения GameActivity:
<?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="com.YourPackage.name.OverrideExample"
android:theme="@style/BaseUnityGameActivityTheme"
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>
<meta-data android:name="android.app.lib_name" android:value="game" />
</activity>
</application>
</manifest>