Androidstudio3.1和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

public class AndroidPlugin : MonoBehaviour {

       private AndroidJavaObject m_androidObj = null;

       private void Awake()

       {

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

               m_androidObj = androidClass.GetStatic<AndroidJavaObject>("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修改一下

public class MainActivity extends UnityPlayerActivity {

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

    public void CallUnityMethod(String str)
   
{
        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"?>

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

   package="com.sl.unity_android"

   android:versionCode="1"

   android:versionName="1.0" >

   <uses-sdk

       android:minSdkVersion="19"

        android:targetSdkVersion="27"/>

   <application

         android:label="@string/app_name">

       <activity android:name=".MainActivity">

           <intent-filter>

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

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

           </intent-filter>

       </activity>

   </application>

</manifest>

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

 

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

 


JS(JavaScript)和Unity可以通过以下几种方式进行互相调用: 1. 使用Unity的JavaScript API:Unity提供了一套JavaScript API,可以在JS中直接调用Unity的功能。通过Unity的文档和官方教程,我们可以了解到Unity所提供的JavaScript API,然后在JS中使用这些API来调用Unity的功能。 2. 使用Unity的Web Player:Unity有一个Web Player插件,它可以在网页中嵌入Unity应用程序。我们可以在JS中通过JavaScript接口来与嵌入的Unity应用程序进行交互。通过这种方式,我们可以将JS中的数据传递给Unity应用程序,并实现双向通信。 3. 使用Unity的C# API和JS插件:除了使用Unity的JavaScript API,我们还可以使用Unity的C# API来进行互操作。我们可以创建一个C#脚本,实现我们需要的功能,然后在JS中通过调用该脚本来使用Unity的功能。 4. 使用WebSocket通信:WebSocket是一种用于在Web浏览器和Unity应用程序之间进行实时通信的网络协议。我们可以在JS中使用WebSocket API与Unity应用程序建立连接,并通过该连接发送和接收数据。这种方式可以实现实时的数据传输和双向通信。 总结来说,JS和Unity可以通过JavaScript API、Web Player、C# API和JS插件以及WebSocket通信等方式进行互相调用。具体使用哪种方式,取决于我们的需求和技术背景。需要注意的是,在使用这些方式进行互操作时,我们需要充分了解和掌握各种API和技术的使用方法和注意事项,以确保正确地进行调用和交互。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值