Unity调用Android jar包方法——(三、使用UnitySendMessage发送数据)

Unity工程里调用安卓的方法,需要用到JAR包。此文档主要介绍了Unity与Android相互通信的方法三。

    使用方法1,需要修改程序的主Activity,所以可以在程序的生命周期做一些初始化和其他工作。
    使用方法2,不需要修改主Activity,并可同时使用多个JAR包。
    使用方法3,Unity脚本中的方法可以被JAR包内调用,通常用来接受广播并将信息发送到Unity。

 

3、Unity直接调用jar包方法

Android工程中:

1、创建新的Android工程,在工程中app->libs导入classes.jar, 并右击选择Add As Library;

unity图标右键选择属性->打开文件位置找到classes.jar(Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar)

2、Android类继承UnityPlayerActivity;

3、在需要的地方调用UnityPlayer.UnitySendMessage(String s1, Strinig s2, String s3);(至少需要传入两个参数,第一个参数为unity中的一个gameobject名称,第二个参数为这个gameobject身上捆绑的脚本中的一个方法,而第三参数事实上是这个对应方法上的参数。)

如在接收到蓝牙广播时通知Unity:

switch (message) {

           case BluetoothAdapter.STATE_OFF:

                     UnityPlayer.UnitySendMessage("SetState", "setBluetoothState", "bt_state_off");

                     break;

       … …

4、删除 setContentView(R.layout.activity_main); 代码行;

5、将Android工程导出Jar包,如:unityToAndroid.jar

Unity工程中:

6、将Jar包(unityToAndroid.jar)拷贝到Unity工程中Assets/Plugins/Android/目录下。

7、Unity中创建UnityPlayer.UnitySendMessage(String s1, Strinig s2, String s3);jar包中提到的名为s1的gameobject。如上例中的“SetState”。

8、创建新脚本,挂在到名为s1的gameobject上,并在脚本中创建方法名为s2。如上例中的“setBluetoothState”。

 public Text wifiText;

 public void setWifiState(string s){

           wifiText.text = s;

            ......

 }

9、jar包中的UnityPlayer.UnitySendMessage(String s1, Strinig s2, String s3)一旦执行,此方法就会被调用,并将s3作为参数传入Unity中的s2方法中。如上例中的 "bt_state_off"作为参数传递给setWifiState(string s){}中的s。

注:该方法是一种Unity被动接受消息的方式,适用于Unity接受系统消息,如:wifi、蓝牙、电量等状态的变化信息等。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值