UM3L3——Android中调用Unity内容
UM3L3——Android中调用Unity内容
本章代码关键字
1 | UnityPlayer.UnitySendMessage() //在安卓内执行Unity内内容,传入场景上的对象,再传入要调用的脚本的方法,再传入字符串参数 |
Android调用Unity规则
Android调用Unity相对比较简单,在Android端使用 UnityPlayer.UnitySendMessage
API即可
想要被Android端调用的Unity函数
- 需要写在继承
MonoBehaviour
的脚本中 - 需要挂载在场景中处于激活状态的GameObject上
交互时,在Android端调用API:UnityPlayer.UnitySendMessage("对象名", "函数名", "参数信息")
注意:该API中的参数只能是String
类型或者为null
测试交互
-
在Unity端创建测试脚本,编写测试函数
假设要调用这个类下的
TestAndroidCallUnity
,让屏幕上的UI输出传入的字符串1
2
3
4
5
6
7
8
9
10
11
12using UnityEngine;
using UnityEngine.UI;
public class Lesson3 : MonoBehaviour
{
public Text txtACU;
public void TestAndroidCallUnity(string str)
{
txtACU.text = str;
}
} -
在场景上创建一个空物体,将脚本挂载上去
-
在Android端书写测试代码
在Unity执行安卓程序的某个方法时,该方法反过来调用Unity内的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32package com.taikr.mytestgame;
// import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
//用于测试的成员变量相关
public int testI;
public static int testStaticI = 20;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
}
//用于测试的成员函数
public String TestFun() {
//在返回之前 先调用Unity当中的某个函数
UnityPlayer.UnitySendMessage("ACU", "TestAndroidCallUnity", "你好Unity");
return "String";
}
//用于测试的静态成员函数
public static String TestStaticFun() {
return "TestStaticFun";
}
} -
重新打包aar包,导入Unity中进行打包测试
新打包的arr包需要重新执行删除特定文件的步骤,具体可看打包注意事项
然后,打包apk,安装到真机或者模拟器上运行,查看效果:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!