Androidstudio3.1.3和Unity互相调用

1.新建Android lib工程New->New Module

2.选择Android Library

3.输入package name 这个要和Unity的包名一致

4.在新建的工程下如图位置new 一个 EmptyActivity

 

5.在android工程下的libs文件里添加unity的jar包

Unity中jar有两个路径这个要取决于unity的打包方式

在unity中playersettings下面的otherSetting里的scripting Backend中有Mono和il2cpp两个选项,对应的就Unity/Editor/Data/PlaybackEngines/AndroidPlayer/Variations下的两个文件夹,去里面找到对应需要的class.jar

6. 将class.jar复制到libs下面点击Add AsLibrary导入

7.在unity中新建AndroidPlugin脚本来调用java

using UnityEngine;

public class Unity_Android : MonoBehaviour
{
    private AndroidJavaObject m_AndroidJavaObject = null;
    void Start()
    {
        AndroidJavaClass androidJavaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        m_AndroidJavaObject = androidJavaClass.GetStatic<AndroidJavaObject>("currentActivity");
        if(m_AndroidJavaObject != null)
        {
            m_AndroidJavaObject.Call("CallUnityMethod", "Hello World");
            Debug.Log("Unity Call");
        }
    }

    public void UnityMethod(string str)
    {
        Debug.Log("Android: " + str);
    }

}

8.在unity场景中新建一个gameobject,并且把脚本挂在上面

9.将Android工程里的activity修改一下

package com.cnsd.unitygame;

import android.os.Bundle;

import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;

public class MainActivity extends UnityPlayerActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    public void CallUnityMethod(String str)
    {
        System.out.print("Android Call");
        UnityPlayer.UnitySendMessage("Driver", "UnityMethod", str);
    }
}

这里的CallUnityMethod方面在unity的脚本中有调用,里面在调用“Driver”这个gameObject上挂着的脚本里的对应函数

10.make一下Android工程

 11.make完以后在build/intermediates下面的manifests里面有需要的manifest文件

 

Packaged-class下面有class.jar文件

Packaged-res/debug下面有layout和values文件

12.将需要的文件对应复制到unity里面

注意这里的androidManifest需要修改一下

手动加一些属性,复制过来的不太全,请参照下面的

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.cnsd.unitygame"
    android:versionCode="1"
    android:versionName="1.0" >

  <uses-sdk
      android:minSdkVersion="16"
      android:targetSdkVersion="28" />

  <application
    android:label="@string/app_name">
    <activity android:name="com.cnsd.unitygame.MainActivity" >
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
  </application>

</manifest>

 13.最后unity打包的时候要选择这一项

 

14.打出apk运行就能看到日志了


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值