当前位置: 首页 > news >正文

Android中加载unity aar包实现方案

一、加载unity包

1.将准备好的unity包放到libs文件夹中

app :-libs-unityLibrary-release.aar  //放到这里-src-main

2.在build.gradle.kts(app:)中加载

...android{...sourceSets["main"].jniLibs.srcDir("libs")
}dependencies{...implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("unityLibrary-release.aar"))))...
}
二、在activity中加载unity
package com.base.exampleimport android.os.Bundle
import android.widget.Toast
import com.unity3d.player.UnityPlayer
import com.unity3d.player.UnityPlayerActivityclass MainActivity : UnityPlayerActivity() {companion object {var currentActivity : MainActivity? = null}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)if (mUnityPlayer == null) {mUnityPlayer = UnityPlayer(this)UnityPlayer.currentActivity = thiscurrentActivity = this}// 请求焦点以确保Unity能够接收输入mUnityPlayer?.requestFocus()// 确保Unity知道窗口获得焦点mUnityPlayer?.windowFocusChanged(true)/*** @param 调用unity 的onRewarded方法* 第一个参数 是和unity开发沟通确定的命名* 第二个参数 要调用的方法名* 第三个参数 传递给unity的方法参数*/UnityPlayer.UnitySendMessage("Android", "onRewarded", "")}fun showAd() {Toast.makeText(this, "被unity触发的方法", Toast.LENGTH_SHORT).show()}override fun onStart() {super.onStart()mUnityPlayer?.windowFocusChanged(true)}// 活动暂停时的回调override fun onPause() {super.onPause()mUnityPlayer?.pause()}// 活动恢复时的回调override fun onResume() {super.onResume()mUnityPlayer?.resume()}// 活动停止时的回调override fun onStop() {super.onStop()mUnityPlayer?.windowFocusChanged(false)}// 活动销毁时的回调override fun onDestroy() {super.onDestroy()
//        mUnityPlayer?.quit() // 退出 UnityPlayermUnityPlayer = null // 释放 UnityPlayer 实例}}

在AndroidManifest.xml中,建议添加configChanges配置

        <activity android:name=".MainActivity"android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density"android:exported="false"android:hardwareAccelerated="true"android:launchMode="singleTask"android:resizeableActivity="false"android:screenOrientation="portrait" />

注意事项:
1. unity那边需要知道androdi端加载unity的activity的路径,如:上面示例中的应该是:com.base.example.MainActivity 
2.必须暴露currentActivity 给外部,这样unity才能通过currentActivity调用安卓方法
3.生命周期必须做同步

http://www.dtcms.com/a/494647.html

相关文章:

  • auxiliary英文单词学习
  • Elasticsearch:创建一个定制的 DeepSeek 嵌入推理端点
  • “自然搞懂”深度学习系列(基于Pytorch架构)——01初入茅庐
  • 51c~Pytorch~合集6
  • Java 对接印度股票数据源实现 http+ws实时数据
  • 建设网站分析报告陕西四通建设工程有限责任公司网站
  • 微信网站建设app公司WordPress邮箱注册慢
  • 【Qt】元对象系统:从实际开发中看QML/C++交互原理
  • 【MySQL】从零开始了解数据库开发 --- 数据表的索引
  • 设计模式篇之 策略模式 Strategy
  • 【HarmonyOS】并发线程间的通信
  • 2三、buildroot
  • 开源 C++ QT QML 开发(二十二)多媒体--ffmpeg编码和录像
  • 详细分析平衡树--红黑树(万字长文/图文详解)
  • 国产开源代码管理工具 GitPuk 安装+入门全流程解析
  • wordpress本地视频教程免费网站seo优化
  • 前端布局入门:flex、grid 及其他常用布局
  • Excel中将毫秒时间戳转换为标准时间格式
  • 传奇网站模板免费下载建立网站需要多少钱费用
  • 第2讲:Go内存管理机制深度解析
  • 【解决】mayfly-go 容器启动失败 —— failed to connect to mysql!
  • 基于STM32低功耗授时系统的硬件电路设计-上
  • 嵌入式软件架构--多窗口显示1(后台软件实现)
  • 牛商网网站建设企业网站开发建设
  • 软件供应链安全的革命:深度解析链图·SBOM管理服务平台的技术突破
  • QChart控件:图例QLegend
  • 【活动预告】2025斗拱开发者大会,共探支付与AI未来
  • 开源Filestash 搭建“多合一”文件管理器
  • Web3.0的底层引擎
  • 建设一个手机网站怎么制作网站生成图片