Unity | Unity与Android交互流程总结

一、背景

        虽然使用Unity3D可以完成制作一款游戏的绝大部分工作,但是在研发过程中,对于一些功能,比如实现手机震动、获取手机剩余存储空间等,就需要建立Unity与Android的交互。

二、Unity与Android的交互方式

        Unity与Android的交互有两种方式:1.Unity使用jar\aar库;2.Unity导出gradle项目,在AndroidStudio中进行二次开发。

本文以实现手机震动功能为例,采取第一种方式进行Unity与Android的交互。

三、运用Android Studio导出jar包

1.新建Android Studio工程:设置项目名称为PhoneShake,设置包名为com.unity.phoneshake。

2.新建Library:注意包名还是com.unity.phoneshake。

 

3.引入unity的 classes.jar包:将classes.jar复制到Android Studio项目mylibrary/libs下,选中classes.jar右键→Add As Library。(classes.jar包路径为Unity安装目录下:\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar)

4.添加手机震动权限申请:修改mylibrary下的AndroidManifest.xml。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.unity.phoneshake" >

    <uses-permission android:name="android.permission.VIBRATE" />

    <application

        android:label="手机振动">

        <activity android:name=".MainActivity">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />

        </activity>

    </application>

</manifest>

5.在mylibrary下创建MainActivity类,该类继承自UnityPlayerActivity。

package com.unity.phoneshake;

import android.app.Service;

import android.os.Bundle;

import android.os.Vibrator;

import android.widget.Toast;

import com.unity3d.player.UnityPlayerActivity;

public class MainActivity extends UnityPlayerActivity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

    }

    public void UnityCallShake(String msg){

        Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_LONG).show();

        Vibrator vibrator=(Vibrator)getApplication().getSystemService(Service.VIBRATOR_SERVICE);

        vibrator.vibrate(2000);
    }

}

6.导出jar包:选中mylibrary,"Build"→"Make Module 'mylibrary' ",将生成的aar包解压,将解压出来的classes.jar替换libs文件夹下的classes.jar(aar包路径:mylibrary\build\outputs\aar)。

四、Unity使用jar包

1.创建Unity新工程,将上一步解压出来的libs文件及AndroidManifest.xml文件导入到Unity工程Plugins/Android文件夹下。

2.创建一个Button,写入与Android交互的代码。设置包名与Android Studio工程中包名一致,打包项目即可生成apk。

using UnityEngine;

using UnityEngine.UI;

public class CallAndroid : MonoBehaviour {

    AndroidJavaObject JavaObject;

    private void Awake()
    {
        this.GetComponent<Button>().onClick.AddListener(delegate
        {
            ClickShakeBtn();
        });
    }

    void Start()
    {
        AndroidJavaClass androidJavaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        JavaObject = androidJavaClass.GetStatic<AndroidJavaObject>("currentActivity");
    }

    public void ClickShakeBtn()
    {
        JavaObject.Call("UnityCallShake", "来自Unity的调用");
    }

    
}

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烫青菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值