再谈Unity调用Android的Activity - tlnshuju

时间:2024-03-08 15:13:10

再谈Unity调用Android的Activity

2017-05-08 17:16  tlnshuju  阅读(1175)  评论(0编辑  收藏  举报

这段时间在研究Unity4.3开发环境下。怎样调用由Android SDK4.4.2写的Activity。參考了非常多网上的博客。百度出了几十篇大部分都是转载雨松MOMO的,这里必须向雨松MOMO表示敬意!但雨松MOMO写的博客太旧了,不少内容已经过时,我严格按他说的步骤进行,还是出了问题,所以本博客就是告诉大家在Unity4.3+Android SDK4.4.2环境,起动Activity的细节。

我这篇博客不会从零讲起,所以首先给出两个重要的链接,大家应该看一下:

第一个是雨松MOMO的  http://www.xuanyusong.com/archives/667  这篇博客的概念是正确的,但操作过程已过去

第二个是一个比較新的博客  http://www.narkii.com/club/thread-320335-1.html  这篇博客的概念和操作都是正确的,但细节有所省略,重点不够明白。我的博客即是对它的补充。


步骤:

1:打开Eclipse,创建一个Androidproject,注意,要么在创建时选择创建库,要么创建之后在project属性的Android页面勾选Is Library

2:在project属性中的Java Build Path -> Libraries中。用Add External JARsbutton,把Unity的classes.jar加进来,比方我的Unity是装在D盘。则路径是:D:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer\development\bin。

3:写两个Activity。A和B。实如今A中启动B。这个过程能够參考上述推荐的博客,他们讲的非常具体,我这里仅仅是强调一下,A需继承自UnityPlayerActivity,而B则仅仅需继承自Activity

4:编译Androidproject,会在bin文件夹下生成一个XXX.jar文件。注意,这个jar仅仅有2k左右大小是不能用的。原因是非常多class没有包括进去,比方非常重要的R.layout.class。编译完了后必须使用Export导出。并选择正确的打包项才会生成一个100-600k大小的jar,这一点雨松MOMO没有讲。

以下是我选择的打包项:


5:至此。Android部分基本OK。打开Unity创建一个Project,在Assets\Plugins\Android以下。把刚刚生成的jar拷贝过来。另外还有res目录。

6:到Unity的安装文件夹下D:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer找到AndroidManifest.xml,将其复制到Unityproject的Assets\Plugins\Android文件夹下,然后改动它有两个地方要改动,1是把package改为你的androidproject的包名。2是把<activity android:name=这句等号后面的内容改为你的Androidproject的主Activity的名字,比方我的:

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.unitytestactivity"
android:installLocation="preferExternal"
android:theme="@android:style/Theme.NoTitleBar"
    android:versionCode="1"
    android:versionName="1.0">

..........

..........

<activity android:name=".UnityTestActivity"
                android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">

注意名字前的点。第二句表示启动时不显示Title。这个问题曾折腾我非常久。第三句直接拷贝。

7:写Unity下的脚本cs文件,这里没什么好说的。參考雨松MOMO。

8:Unity的Build Setting注意把Bundle Identifier改为你的Androidproject的包名。

9:注意,从Unity中启动一个Activity的功能无法在Unity中模拟执行,必须安装到真机中才干看到效果,我曾傻傻的并郁闷的试了好久。预计兴许的Unity版本号会改进这个问题。