最近项目有个需求,将Unity工程集成入甲方的Android App中,网上看了一些资料,但大多都是过期的操作,也少有提及如何从Unity跳转回Android App,或者提及的方法是先在Android中写方法,然后导出jar包到Unity中再调用,我感觉应该不用这样繁琐,本文记录下我研究的过程,因为我之前完全未涉及Android开发,所以这里的方式未必好,仅提供参考。
Unity 5.6.1(64位)
Android Studio 3.0
一、搭建Android App工程
因为之前完全未涉及Android开发,所以先跟着官方网站的基础教程(需要翻墙打开)做了一个简单的App,这个App有两个Activity:MainActivity和DisplayMessageActivity,功能为前者页面中输入文字,点击”Send”按钮,便打开后者并显示输入的文字内容。
MainActivity:
DisplayMessageActivity:
二、制作Unity工程
简单起见,仅实现点击屏幕,Cube便显示在点击位置的功能,核心代码如下:
登录后复制
void Update () {
#if UNITY_STANDALONE_WIN || UNITY_EDITOR
if (Input.GetMouseButton(0))
{
transform.position = cam.ScreenToWorldPoint(Input.mousePosition + vec);
}
#elif UNITY_ANDROID || UNITY_IOS
if (1 == Input.touchCount && Input.GetTouch(0).phase == TouchPhase.Ended)
{
transform.position = cam.ScreenToWorldPoint(Input.mousePosition + vec);
}
#endif
}
其中vec值是(0,0,10),也就是z轴加了一个离摄像机的距离,不然Cube会出现在摄像机的位置,显示结果就是Cube消失了。
三、集成
1.Unity导出安卓工程文件
注意PlayerSettings中PackageName必须与Android App一致,然后BuildSettings中切换到Android平台,设置Build System为“Gradle”,勾选”Export Project”,点击”Export”。
导出后的工程根目录如下:
内部文件目录为:
- libs/unity-classes.jar
- src/main/assets
- src/main/java
- src/main/jniLibs
- src/main/res
- src/main/AndroidManifest.xml
2.拷贝文件到Android工程
- 将libs/unity-classes.jar文件拷贝至app/libs目录下,并右键点选”Add as Library”;
- 将src/main/assets整个目录拷贝至app/src/main目录下;
- 将src/main/java最终子目录中的UnityPlayerActivity.java文件拷贝至app/src/main/java子目录中MainActivity同级目录下;
- 将src/main/jniLibs整个目录拷贝至app/src/main目录下;
- 将src/main/AndroidManifest.xml中<activity>...</activity>
代码块中的 <action android:name="android.intent.action.MAIN" />
删除后,拷贝至app/src/main/AndroidManifest.xml中;
最后的目录结构应该是这样:
3.编写Android打开Unity界面的代码
- 在MainActivity中添加一个Button,文本为”Open Unity”,见步骤一中的MainActivity图片;
- 在”MainActivity.java”中添加”OpenUnity”方法,代码如下:
- 绑定该方法到Button的onClick事件上;
到此步骤后,可先行测试是否可正常从Android打开Unity,下一步骤需要更改Unity工程重新发布。
4.编写Unity打开Android界面的代码
登录后复制
public void ReturnToAndroid()
{
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.CallStatic("Return",jo);
AndroidJavaObject context = jo.Call<AndroidJavaObject>("getApplicationContext");
}
至此,所有步骤就完成了,连上手机,在Android Studio中点击Run即可看到效果了。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删