Unity Android Plugin 开发教程

  • Post author:
  • Post category:其他


这里写图片描述



开发环境Windows平台(Unity2017.1.0f3 Personal ,Android Studio 2.3.3)

在Unity项目中构建和使用Android Plugin


Unity支持几种类型的Android plug-ins:

这里写图片描述

  1. AAR 插件 和 Android Library
  2. JAR 插件
  3. 继承UnityPlayerActivity
  4. Native(C++) 插件


Unity Android runtime


Untiy Android runtime

通过继承自

FrameLayout



UnityPlayer

实现,

UnityPlayer

实现了触控,键盘输入,相机,位置等特性。虽然这个

UnityPlayer

实现了大部分的

native

功能,但它不是应用程序的入口。

在通用的Android Unity应用程序中,程序的入口是

UnityPlayerActivity

。如果你看一下APK文件反编译后的AndroidManifest.xml文件,可以看到它是如何标记

UnityPlayerActivity

作为应用程序的Launcher的。

这里写图片描述

查看Unity安装目录发现,

UnityPlayerActivity

的源码可以在

C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Source

中查看。

这里写图片描述

public class UnityPlayerActivity extends Activity
{
   
    protected UnityPlayer mUnityPlayer; // don't change the name of this variable; referenced from native code

    // Setup activity layout
    @Override protected void onCreate (Bundle savedInstanceState)
    {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);

        getWindow().setFormat(PixelFormat.RGBX_8888); // <--- This makes xperia play happy

        mUnityPlayer = new UnityPlayer(this);
        setContentView(mUnityPlayer);
        mUnityPlayer.requestFocus();
    }

    .........

    // For some reason the multiple keyevent type is not supported by the ndk.
    // Force event injection by overriding dispatchKeyEvent().
    @Override public boolean dispatchKeyEvent(KeyEvent event)
    {
        if (event.getAction() == KeyEvent.ACTION_MULTIPLE)
            return mUnityPlayer.injectEvent(event);
        return super.dispatchKeyEvent(event);
    }

   .........
}

可以看到

UnityPlayerActivity

继承自

Activity

,并且

UnityPlayerActivity

持有一个

UnityPlayer

实例。

UnityPlayerActivity

通过

UnityPlayer

分派

native

事件。

这里写图片描述


通用的Android插件开发,通过继承

UnityPlayerActivity


,并使子类成为整个应用程序的

LAUNCHER


Activity

,接下来将介绍继承

UnityPlayerActivity

方式的

Android Plugin

继承

UnityPlayerActivity

方式的

Android Plugin

这里写图片描述


Android Plugin

需要包含Android项目中

build

后得到的

app-debug.aar



Manifest.xml

以及资源文件等,提供给Unity项目使用。文件存放在Unity项目中的

/Assets/Plugins/Android

。Unity项目中的代码通过

app-debug.aar

与封装在其中的Android代码进行交互。For more details about

.aar

, see

Android Developer Doc

. And for more information about

“How Unity produces the Android Manifest”

, see

Unity Developer Doc

这里写图片描述

这里写图片描述

那么,接下来新建Android项目,进而生成

app-debug.aar

文件和

Manifest.xml</



版权声明:本文为roly_yu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。