Unity与Android接口互相调用
16lz
2021-01-23
Unity与Android接口互相调用
Unity调用Android
制作jar包
1在Eclipse中创建一个安卓工程 2记住包名 com.gdidq.androidmethod 3将D:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\release\bin\classes,jar 引用到工程编写java类
package com.gdidq.androidmethod;import com.unity3d.player.UnityPlayerActivity;public class UserMethod extends UnityPlayerActivity{public static int myadd(int a, int b){System.out.println("int android myadd" );return a+b;}public static void testadd(int a , int b){System.out.println("int android testadd result iS" + (a+b) );}}导出jar包 只导出这个文件就好 (涉及什么文件就勾选什么)
将导出的jar包放在指定目录 工程Assets\Plugins\Android\libs\
Unity -> PlayerSettings 安卓选项中 Bundle Identifer 和包名保持一致
Unity部分关键代码
using UnityEngine;using System.Collections;public class TestManager : MonoBehaviour{ private const string AndroidJavaFacebookClass = "com.gdidq.androidmethod.UserMethod";#if UNITY_ANDROID private AndroidJavaClass usermethod; private AndroidJavaClass UserMethod { get { if (usermethod == null) { usermethod = new AndroidJavaClass(AndroidJavaFacebookClass); if (usermethod == null) { throw new MissingReferenceException(string.Format("AndroidFacebook failed to load {0} class", AndroidJavaFacebookClass)); } } return usermethod; } }#endif // Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {} void OnGUI() { if (GUI.Button(new Rect(100,100,100,50),"testadd")) {#if UNITY_ANDROID Debug.Log("touch button in Unity"); UserMethod.CallStatic("testadd", 2,3); int temp = UserMethod.CallStatic<int>("myadd", 2,3); Debug.Log("result in unity = " + temp);#endif } }}
Android调用Unity
需要引用com.unity3d.player.UnityPlayer 这个类import com.unity3d.player.UnityPlayer;
UnityPlayer.UnitySendMessage("Unity中的GameObject","GameObject对应脚本中的函数名","传递到Unity中的string")
以传到Unity中的Main Camera为例 为Main Camera 创建一个脚本 在脚本中添加FromAndroid 函数
void FromAndroid(string str) { Debug.Log("Unity recieve str = " + str); }
修改java文件中的testadd函数 由于改函数没有返回值 试着调用Unity中的函数来将结果传递过去
public static void testadd(int a , int b){System.out.println("int android testadd result iS" + (a+b) );//对象名接受消息的方法发送的消息内容UnityPlayer.UnitySendMessage("Main Camera","FromAndroid","dong test send message to unity from android + result"+ (a+b));}
更多相关文章
- Android 文件操作,删除,拷贝文件等
- Android系统源码编译全过程——下载Android源文件并编译
- [Android] 文件夹下文件的个数限制
- Android之Telephony各文件解释
- Android 自定义View及其在布局文件中的使用示例(二)
- Android OpenGL库函数列表
- android UI设计之 背景透明色 项目资源文件关系