Androidstudio和unity互相调用

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

Androidstudio和unity互相调用_第1张图片

2.选择Android Library

Androidstudio和unity互相调用_第2张图片

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

Androidstudio和unity互相调用_第3张图片

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

Androidstudio和unity互相调用_第4张图片 

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

Androidstudio和unity互相调用_第5张图片

Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Release\Classes里面找到对应需要的class.jar

Androidstudio和unity互相调用_第6张图片

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

Androidstudio和unity互相调用_第7张图片

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

public class AndroidPlugin : MonoBehaviour {

       private AndroidJavaObject m_androidObj = null;

       private void Awake()

       {

               AndroidJavaClass androidClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");

               m_androidObj = androidClass.GetStatic("currentActivity");

       }

       void Start () 

        {

               if (m_androidObj != null)

               {

                    m_androidObj.Call("CallUnityMethod", "testString");

               }

        }

       public void UnityMethod(string str)

       {

           Debug.Log("android called unityMethodparam:" + str);

       }

  }

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

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

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);
        //setContentView(R.layout.activity_main);
    }

public void CallUnityMethod(String str)
 {
 UnityPlayer.UnitySendMessage("Driver","UnityMethod",str);
}
}

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

10.make一下Android工程

Androidstudio和unity互相调用_第8张图片

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


Androidstudio和unity互相调用_第9张图片
Androidstudio和unity互相调用_第10张图片
Packaged-res/debug下面有layout和values文件
Androidstudio和unity互相调用_第11张图片
12.将需要的文件对应复制到unity里面

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

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

图标其他的也要自己加入

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.unity_">

    <!--访问网络连接,可能产生GPRS流量-->
     <uses-permission android:name="android.permission.INTERNET"/>

     <application>
       <activity android:name=".MainActivity">
         <intent-filter>
           <action android:name="android.intent.action.MAIN" />

           <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
       </activity>
     </application>

</manifest>

   package=“com.sl.unity_android”

   android:versionCode=“1”

   android:versionName=“1.0” >

   

       android:minSdkVersion=“19”

        android:targetSdkVersion=“27”/>

   

         android:label=”@string/app_name">

       

           

               

               

           

       

   

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

Androidstudio和unity互相调用_第12张图片

 

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

 


你可能感兴趣的:(Androidstudio和unity互相调用)