unity获取 Android 启动传参

目前在做的一个功能测试,Android Studio开发App作为启动器,开启Unity制作的Focus3 app,并且传入启动参数供Unity使用。

Android Studio开发启动器不在我处理的范畴,我只负责Unity端获取启动参数。记录一下几天成果,防止过段时间全忘了。可能对多数人是没什么帮助的。

首先也是要使用Android Studio的,但是不会很难,我就是完全没有这方面经验开始做的。版本为4.1。Unity使用2019.4.28,注意使用unity2018的话操作会有一些不一样的地方。

Android Studio创建新项目

 选择EmptyActivity

 下一步填写项目名称、PackageName、MinimumSDK等。PackageName和MinimumSDK要稍微记一下,等等要和unity中设置一致。 

 选择ProjectFiles会看到如下目录(这是app目录下应该是没有build文件夹的,打码的是项目名)

Android Studio导入unity库

在MainActivity中编写代码需要引用UnityPlayerActivity,所以需要导入Unity相关文件。找到Unity安装文件夹如下目录:(D:\Unity\2019.4.28f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes)

复制该目录下的classes.jar文件到Android项目的app->libs目录下。在Android Studio中右键classes.jar->add as library...

如果你使用的是Unity2018,那么你可以跳过下面导入UnityPlayerActivity.java文件这一步。

使用Unity2019需在unity安装目录:D:\Unity\2019.4.28f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Source\com\unity3d\player 找到UnityPlayerActivity.java。在Android项目的app->src->main->->java->com目录下自建目录com->unity3d->player,键刚刚找到的UnityPlayerActivity.java文件复制到该自建目录下。

目前项目目录如下,打码的为项目名称,目前还是没有app->build文件夹。

双击Android项目app->build.gradle文件,并修改如下:

 

 双击Android项目app->src->main->AndroidManifest文件,并修改如下:

 

编写代码

 双击app->src->main->->java->com->"项目名"->MainActivity编写如下代码。

以下代码功能是可以实现,Java没接触过,也不知道这么写有没有问题。如果有还请大佬指正一下。

 

接下来就可以打包了工具栏点击Build->Make Project

 此步骤会在app目录下,生成build文件夹。复制以下两张图的文件到Unity中。

Unity操作

新建unity项目,设置包名和最低sdk与安卓项目以及AndroidManifest文件包名都保持一致。

在unity创建下图目录存放上述两个文件。

右键classes,show in explorer。在打开的文件夹中右键classes,打开方式->WinRAR 压缩文件管理器(不用WinRAR,其它的也行)。在打开的窗口中找到BuildConfig.class文件并删除。

新建脚本并编写如下代码:

 到这unity打包apk,在手机安装,就可以测试了。(可能大部分人都测试不了,因为没有启动器app传参)

htc Focus3 测试

Focus端就不用这么麻烦了,不需要用到Android Studio。编写如下代码就能获取到当前Activity的Intent类。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UnityAndroid 平台上打包的应用程序可以接收启动参数,您可以在启动应用程序时传递参数,然后在 Unity 应用程序中读取这些参数。 以下是一些基本步骤: 1. 在您的 Android 应用程序代码中,使用 Intent 对象传递参数。例如: ``` Intent intent = new Intent(this, UnityPlayerActivity.class); intent.putExtra("myParam", "Hello World!"); startActivity(intent); ``` 2. 在 Unity 应用程序中,使用 Application 类的 OnCreate() 方法获取传递的参数。例如: ``` void Awake() { // 获取传递的参数 string myParam = ""; if (Application.platform == RuntimePlatform.Android) { AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); myParam = jo.Call<string>("getIntentStringExtra", "myParam"); } Debug.Log("My parameter is: " + myParam); } ``` 3. 在您的 Android 应用程序代码中,创建一个新的类,继承 UnityPlayerActivity 类。这个新的类可以在应用程序启动时接收参数,并将其传递给 Unity 应用程序。 ``` public class MyUnityPlayerActivity extends UnityPlayerActivity { @Override protected void onCreate(Bundle savedInstanceState) { Intent intent = getIntent(); String myParam = intent.getStringExtra("myParam"); UnityPlayer.UnitySendMessage("MyGameObject", "OnAndroidParamReceived", myParam); super.onCreate(savedInstanceState); } } ``` 请注意,这只是一个基本的示例,具体实现可能会因您的项目而异。您可以参考 Unity 官方文档中的更多详细信息和示例代码来进行更深入的了解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值