目录
在前边文章中我们配置好了环境,接下来我们开始使用脚本进行相互调用
第一种:Unity 为主导使用 使用安卓中的类和方法
1 写安卓脚本
复制:
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public String UnityCallAndroid(){
return "unity 调用 安卓里的方法";
}
}
2 导出jar包到unity
1. 编译文件
2. 使用Project 视图,寻找AndroidManifest.xml,和classes.jar包。放到一个空的文件里,方便我们进行修改。
3. 修改AndroidManifest文件:也可以不修改,这里我们默认包名和设置的应用名字。
4. 复制到unity里
在untiy 中创建文件夹,名字为 Plugins,在Plugins中创建Android,在Android创建Libs,如图所示
这里请注意,一定要把AndroidMinifest 放到Android下边,不然识别不了。
5. 创建Test 对象,用于挂脚本。
并且创建text_Test的Text对象,用于显示结果。
3. 写Unity 脚本 调用 安卓,
写Unity 脚本 调用 安卓,创建Test脚本将脚本挂在Test 空对象上。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
public Text text_Test;
// Start is called before the first frame update
void Start()
{
text_Test = GameObject.Find("text_Test").GetComponent<Text>();
//获得com.unity3d.player.UnityPlayer 下的类,对于扩展的Activity 是一个固定的写法。只要记住就行了
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
//获得 jc 类中的 currentActivity 对象,也是一种固定的写法
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
//call 方法内的参数,第一个是要调用对象的方法名,第二个参数是这个方法的参数这里没有就不用填。
string str= jo.Call<String>("UnityCallAndroid").ToString();
text_Test.text = str;
}
}
4. 打包,运行测试。
配置包名
进行了打包安装到手机测试,没有问题。
安卓源码和unity 源码请点击下载:下载源码
第二种:安卓调用unity的方法
1. 写安卓脚本
2. 导出Jar包
同上边的导出操作一样,忘记的同学可以回到上边看看。
3. 在unity写脚本
添加 AndroidCallUnity 函数。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
public Text text_Test;
// Start is called before the first frame update
void Start()
{
//获得com.unity3d.player.UnityPlayer 下的类,对于扩展的Activity 是一个固定的写法。只要记住就行了
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
//获得 jc 类中的 currentActivity 对象,也是一种固定的写法
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
//call 方法内的参数,第一个是要调用对象的方法名,第二个参数是这个方法的参数这里没有就不用填。
string str= jo.Call<string>("UnityCallAndroid").ToString();
text_Test.text = str+"\n";
}
//被安卓 调用的函数
void AndroidCallUnity(string str)
{
text_Test.text = str+"\n";
}
}
4. 打包测试
根据以上可以看出来,先调用的unity里的start 方法:unity调用安卓,后是Activity 调用的unity。
安卓源码和unity 源码请点击下载:下载源码
有帮助给博主点个赞吧!有问题就留言