第一种:Unity 为主导使用 使用安卓中的类和方法
复制:
登录后复制
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public String UnityCallAndroid(){
return "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对象,用于显示结果。
写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;
}
}
配置包名
进行了打包安装到手机测试,没有问题。
同上边的导出操作一样,忘记的同学可以回到上边看看。
添加 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";
}
}
根据以上可以看出来,先调用的unity里的start 方法:unity调用安卓,后是Activity 调用的unity。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删