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
    评论
Unity调用Android相册可以通过编写本地插件来实现。以下是一种方法: 首先,创建一个Java类作为我们的本地插件。在Android Studio中,创建一个新的Java类文件,并添加以下代码: ```java import android.content.Intent; import android.net.Uri; import android.provider.MediaStore; public class GalleryPlugin { public static void OpenGallery() { Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[]{"image/jpeg", "image/png"}); UnityPlayer.currentActivity.startActivityForResult(intent, 1); } } ``` 然后,在Unity中创建一个C#脚本来调用这个本地插件。在脚本中,我们将使用`DllImport`来导入Android库,并定义一个静态方法来调用Java类中的方法: ```csharp using System.Runtime.InteropServices; public class AndroidGallery : MonoBehaviour { [DllImport("gallery_plugin")] private static extern void OpenGallery(); public void OpenAndroidGallery() { OpenGallery(); } } ``` 在Unity中创建一个UI按钮,并将其连接到`OpenAndroidGallery`方法。这样,当我们点击按钮时,将调用本地插件的方法。 最后,将生成的Java类文件和C#脚本文件分别放在对应的目录中,并导出到Android项目中。 通过这种方式,我们可以在Unity调用Android相册,并允许用户选择图片。一旦用户选择了图片,可以使用Unity的处理方法进行后续操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值