当前位置:   article > 正文

已有Android工程集成Unity工程_android/app/libs/unity-classes.jar

android/app/libs/unity-classes.jar
前言

最近项目有个需求,将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
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

其中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界面的代码

  • Unity中新增脚本,编写跳转方法,并绑定到一个按钮上,关键代码如下:
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");

    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 按第三步骤第1步重新导出Unity的Android工程文件,然后用新的assets替换旧的assets目录,其他不用动;
  • Android工程中在UnityPlayerActivity.java中新增方法:

这里写图片描述

至此,所有步骤就完成了,连上手机,在Android Studio中点击Run即可看到效果了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/118924
推荐阅读
相关标签
  

闽ICP备14008679号