Unity与Android通信详解:实现无缝交互

Unity与安卓交互

一、AndroidStudio


1.打开AndroidStudio后新建一个Empty Acticity项目

android unity 通信 unity与android交互详细_android

2.点击Next进行下一步

android unity 通信 unity与android交互详细_jar包_02

3.name自己取一个,包名我设置为com.unity3d.player,接入多个sdk容易整合语言我们选择java,Api设置为17,然后点击Finish完成

name: TestDemo

Package name: com.unity3d.player

language: Java

Api: 17

android unity 通信 unity与android交互详细_jar包_03

4.稍等AS加载一下,我们就可以搭建安卓和Unity通讯了

android unity 通信 unity与android交互详细_xml_04

5.我们将AS切换到Project视图

android unity 通信 unity与android交互详细_jar包_05

6.将Unity的jar包放到AS的app-libs文件夹下

jar包的位置:

你的Unity安装位置\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes

android unity 通信 unity与android交互详细_android unity 通信_06


AS的app-libs打开快捷方式

android unity 通信 unity与android交互详细_xml_07


复制粘贴过来就行了

android unity 通信 unity与android交互详细_jar包_08

7.将jar包添加到Library

(1.)我们右键点击app,然后选择Open Moudle Settings打开模式设置

android unity 通信 unity与android交互详细_android_09


看到classes.jar包被依赖上了

android unity 通信 unity与android交互详细_AndroidStudio_10


(2.)右键libs下的classes,然后选择add As Libratr…

android unity 通信 unity与android交互详细_AndroidStudio_11


点击Ok!

android unity 通信 unity与android交互详细_android unity 通信_12

8.加载完成后就可以修改MainActivity.jar文件

先找到它

android unity 通信 unity与android交互详细_xml_13

android unity 通信 unity与android交互详细_android_14


(1.)将MainActivity.jar文件的继承从 AppCompatActivity 改成 UnityPlayerActivity

(2.)删掉文件中灰色的引用:

android unity 通信 unity与android交互详细_xml_15


3.)删掉 setContentView(R.layout.activity_main);

android unity 通信 unity与android交互详细_jar包_16


4.)打开app文件夹下的build.gradle

android unity 通信 unity与android交互详细_AndroidStudio_17


1)、最上方的 apply plugin: ‘com.android.application’ 改为 apply plugin: ‘com.android.library’

2)、注释掉 applicationId “你的包名”

3)、注释掉测试用的 testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner”

android unity 通信 unity与android交互详细_jar包_18


注释掉下面的这四项

android unity 通信 unity与android交互详细_android unity 通信_19

9.删掉styles.xml文件

文件位置:app-src-main-res-values-styles.xml

android unity 通信 unity与android交互详细_AndroidStudio_20

10.修改activity_main.xml

文件位置:app-src-main-res-layout-activity_main.xml

android unity 通信 unity与android交互详细_xml_21


1.)如果界面是这个样子的,就点击下面这个Text

android unity 通信 unity与android交互详细_xml_22


2.)删掉红框所选区域

android unity 通信 unity与android交互详细_android unity 通信_23


3.)删掉灰色代码

android unity 通信 unity与android交互详细_jar包_24

11.修改AndroidManianifest.xml文件

文件位置:app/src/main/AndroidManianifest.xml

android unity 通信 unity与android交互详细_jar包_25


a、将 android:theme="@style/AppTheme"> 改为 android:theme="@android:style/Theme.NoTitleBar">

b、将 <activity android:name=".MainActivity"> 改为 <activity android:name="你的包名.MainActivity">

android unity 通信 unity与android交互详细_android_26

12.我们返回MainActivity.jar文件添加方法,供Unity调用

1.)添加 UnityCallShake 方法,

登录后复制


public void UnityCallShake(String msg){
        Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_LONG).show();
        Vibrator vibrator=(Vibrator)getApplication().getSystemService(Service.VIBRATOR_SERVICE);
        vibrator.vibrate(2000);
   	 }
   	 
   	 

2.)需要import这几个包

import android.app.Service; import android.os.Vibrator; import android.widget.Toast;

点击这个小灯泡

android unity 通信 unity与android交互详细_android unity 通信_27


添加震动权限

android unity 通信 unity与android交互详细_android unity 通信_28

13.导出jar包

android unity 通信 unity与android交互详细_jar包_29


等待加载完成

android unity 通信 unity与android交互详细_jar包_30

14.找到jar包,打开文件位置,解压jar包

jar包位置:app-build-outputs-arr-app-debug.arr

android unity 通信 unity与android交互详细_AndroidStudio_31


使用你的压缩软件解压,没有解压选项选择打开方式,如果你的解压软件不支持,那就下载一个别的

android unity 通信 unity与android交互详细_jar包_32


解压完成

android unity 通信 unity与android交互详细_android_33


将文件里的libs、res、AndroidManifest.xml文件 复制到Unity文件夹Assets-Plugins-Android文件夹下。

android unity 通信 unity与android交互详细_jar包_34


删掉libs文件夹的classes.jar包,替换为②解压文件根目录里的classes.jar包。

android unity 通信 unity与android交互详细_xml_35

15.在Unity调用Jar包

登录后复制


using UnityEngine;
 
public class ClickShake : MonoBehaviour {
 
    AndroidJavaObject JavaObject;
 
	void Start () {
        //以下两行是调用AScurrentActivity中方法的默认写法。不需修改。
        AndroidJavaClass androidJavaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        JavaObject = androidJavaClass.GetStatic<AndroidJavaObject>("currentActivity");
	}
 
    public void ClickShakeBtn()
    {
        JavaObject.Call("UnityCallShake", "来自Unity的调用");
    }
    
    

16.打包

a、包名与AS保持一致

b、Unity最小API与AS保持一致

c、用Internal打包                


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空