Unity与Android相互调用

目录

•Script简介

•unityScript生命周期

•Script通讯

•Build apk / export project

•Android Unity Project

•AndroidóUnity


Script简介

Unity中可以使用c#unityScript

Unity中能挂在在GameObject上的都是component

Script也可以作为component

Script必须继承MonoBehaviour才能挂载到GameObject(create时候自动继承)

脚本挂载

选中一个gameObject,Inspector中点击add Component 选中脚本即可.

unityScript生命周期

Awake—场景启动时调用所有脚本的该方法

Start—awake调用完之后,调用所有脚本是start方法

Update—场景起来之后,每一帧调用一次

Lastupdate场景起来之后,每一帧调用一次

Fixupdate一帧调用几次(一秒60,调用一次,一秒30,调用两次,根据当前设备性能)

调用Destory销毁Gameobject

Gameobject上挂载的脚本会调用onDestory

Script通讯

GameObject.Find找到其它GameObject

gameObject.GetComponent找到挂在在这个gameObject上的其它component

Build apk / export project

Build setting

File—build setting

Add open scene—选择platform—switch platform—build/export

Build apk / export project

Playsetting

PackageName  小写字母,必须和androidstudio中的工程包名一致

MinMum API Level  <=androidstudio中的版本

Target API Level  <=androidstudio中的版本

export project

Android Unity Project

Unity 导出工程就是一个androidstudio工程

可以直接导入androidstudio

也可以自己new一个android project,unity导出的工程作为一个model加到android project

以下把unity导出的工程称之为A, 自己新建的model称之为B

1.B工程的包名必须和A包名一致

2.Alib/*.jar复制到B工程的lib目录

3.A中的assets复制到B工程中

4.A中的java文件复制到B

5.A的混淆文件复制到B

6.A中的build.gradle放到B

在主工程中继承B中的java,做一部分调整来显示unity

Android-Unity

Android call unity:

UnityPlayer.UnitySendMessage("ButtonFor3dText","onCLickButton",string);

第一个参数为gameobject的名字

第二个参数为gameobject捆绑的脚本中的方法

第三个参数为方法入参(没参数可以瞎;参数需要正确传,只能传一个参数,多参数只能拼接)

Unity call Android(mainActivity中的方法)

AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");

AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");

jo.Call("showToast", "ssssssssssssssssssssssss");

UnityPlayerActivityonCreate中有初始化com.unity3d.player.UnityPlayer

并且UnityPlay中有currentActivity静态成员

showToast 这个方法UnityPlayerActivity中或者UnityPlayerActivity的子类

Unity call Android(普通类的中的静态方法)

AndroidJavaClass jc = new AndroidJavaClass(“com.second.project.TestClass”);//包类名

jc.CallStatic("showLog", "CallAndroidScript", "showAndroidLog");

第一个参数方法名,后面的是可变参数列表

相当于TestClass. showLog("CallAndroidScript","showAndroidLog");

Unity call Android(普通类的中的非静态方法)

AndroidJavaObject jo= new AndroidJavaObject("com.second.project.TestClass");

相当于new TestClass();

jo.Call("showLogNoStatic", "CallAndroidScript", "showAndroidLogNoStatic");

相当于testClass. showLogNoStatic("CallAndroidScript", "showAndroidLogNoStatic");

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值