包含此页的版本:
不含此页的版本:
您可以创建一个 Android 库插件在 Unity 外部创建的一组代码,用于在 Unity 中创建功能。可以在 Unity 中使用两种插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和本机插件(特定于平台的本机代码库)。更多信息
请参阅术语表在 Unity 中。创建后,您可以直接在 Unity 项目中使用它,也可以在 Android Studio 中进一步开发它。
要创建 Android 库插件,请按照以下步骤作:
在 Unity 项目中,创建MyFeature.androidlib文件夹。 此文件夹将表示Gradle:一种 Android 构建系统,可自动执行多个构建过程。这种自动化意味着不太可能发生许多常见的构建错误。更多信息
请参阅术语表模块。
创建一个名为build.gradle在MyFeature.androidlib文件夹并添加以下代码:
apply plugin: 'com.android.library'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
android {
namespace "com.company.myfeature"
compileSdk getProperty("unity.compileSdkVersion") as int
buildToolsVersion = getProperty("unity.buildToolsVersion")
compileOptions {
sourceCompatibility JavaVersion.valueOf(getProperty("unity.javaCompatabilityVersion"))
targetCompatibility JavaVersion.valueOf(getProperty("unity.javaCompatabilityVersion"))
}
defaultConfig {
minSdk getProperty("unity.minSdkVersion") as int
targetSdk getProperty("unity.targetSdkVersion") as int
ndk {
abiFilters.addAll(getProperty("unity.abiFilters").tokenize(','))
debugSymbolLevel getProperty("unity.debugSymbolLevel")
}
versionCode getProperty("unity.versionCode") as int
versionName getProperty("unity.versionName")
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile ('proguard-android-optimize.txt'), 'proguard-rules. pro'
}
}
}
MyFeature.androidlib文件夹:MyFeature.androidlib/srcMyFeature.androidlib/src/main创建一个AndroidManifest.xml文件MyFeature.androidlib/src/main文件夹并添加以下代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"/>
创建一个名为Controller.java在MyFeature.androidlib/src/main/java/com/company/feature/文件夹并添加以下代码:
package com.company.feature;
public class Controller
{
public static String getFoo()
{
return "This is my feature";
}
}
Android 库插件现已创建。
要在 Unity 项目中使用 Android 库插件,请使用以下代码:
using UnityEngine;
public class FeatureUser : MonoBehaviour
{
readonly string ControllerName = "com.company.feature.Controller";
AndroidJavaClass m_Class;
void Start()
{
m_Class = new AndroidJavaClass(ControllerName);
}
private void OnGUI()
{
GUILayout.Space(100);
GUI.skin.label.fontSize = 30;
if (m_Class != null)
{
GUILayout.Label($"{ControllerName}.getFoo() returns " + m_Class.CallStatic<string>("getFoo"));
}
else
{
GUILayout.Label($"{ControllerName} was not found?");
}
}
}
由于 Android 库插件的源文件在 Unity C# 项目中不可见,因此修改或进一步开发插件需要执行以下其他步骤:
您可以从 Android Studio 开发 Android 库插件。由于 Unity 项目直接引用该插件,因此对 Android 库插件的任何修改都会自动反映在 Unity 项目中。