Unity Android Plugin 开发教程

这篇教程详细介绍了如何在Unity中构建和使用Android插件,包括继承UnityPlayerActivity方式和使用AAR或JAR方式。内容涵盖Android端的项目创建、UnityPlayerActivity的继承、AAR文件的生成,以及Unity端的项目设置、C#脚本编写和编译运行。提供了源代码链接和相关参考文献。
摘要由CSDN通过智能技术生成

这里写图片描述

开发环境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通过继承自FrameLayoutUnityPlayer实现,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.aarManifest.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文件和

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值