Unity与Android原生交互开发入门篇 - 打开Unity游戏的设置

目录

前言

Unity项目配置及准备

创建Android项目及配置

实现Android原生代码并导出到Unity

Unity调用Android原生插件

[Unity打包Android APK运行](#Unity打包Android APK运行)


前言

在 Unity 移动开发中,单纯依赖 C# 往往无法满足对系统能力的深度调用,比如相机、蓝牙、支付、地图、推送等功能。这就需要 Unity 与 Android 原生进行交互,通过插件桥接 Java 与 C#,实现更强的扩展能力。本系列将通过实战案例,带你掌握 Unity 与 Android 原生互通的完整流程。


Unity项目配置及准备

  • 将Unity的平台切换为Android平台。
  • 设置游戏的包名为com.unityleraning.unityandroidplugin。(也可根据自己需求定义)
  • 创建对应的Plugins文件夹,用来存放Android的原生交互插件。

创建Android项目及配置

  • 选择创建一个Empty Activity的项目。
  • 创建完成后,在项目左上角的File菜单选择创建一个新的New Module。
  • 选择创建Android Library,更改Package name为com.unitylearning.unityandroidplugin,编程语言选择Java,Minimum SDK可以选择27,点击Finish。
  • 创建一个Java类命名为UnityAndroidPlugin,用来和Unity进行交互。
  • 添加Unity的classes.jar 到项目,因为需要用到Unity的API。创建一个libs文件夹,并将classes.jar文件放进去,classes.jar文件在你安装Unity的文件夹里面的AndroidPlayer文件夹下。并在UnityAndroidPlugin的Module中的build.gradle.kts文件里添加compileOnly关联Unity的classes.jar文件。

实现Android原生代码并导出到Unity

  • 在创建的UnityAndroidPlugin类里实现以下代码,用来打开Unity游戏系统的设置。通过使用UnityPlayer的currentActivity来进行调用。
java 复制代码
public class UnityAndroidPlugin
{
    public static void OpenUnityGameSettings() {
        Uri uri = Uri.fromParts("package", UnityPlayer.currentActivity.getPackageName(), null);
        Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, uri);
        UnityPlayer.currentActivity.startActivity(intent);
    }
}
  • 设置UnityAndroidPlugin的Active Build Variant为release。


  • 点击Assemble Module 'UnityAndroidPlugin.UnityAndroidPlugin.main'导出aar文件。
  • 将生成的UnityAndroidPlugin的aar文件放到Unity项目中的Plugins/Android文件夹下。



Unity调用Android原生插件

  • 在Unity的场景中新建一个按钮用来打开Unity游戏的设置界面。
  • 创建一个UnityAndroidNativePlugin脚本,挂载到Canvas上面,并将打开Unity游戏设置的按钮对应关联起来。
cs 复制代码
public class UnityAndroidPlugin : MonoBehaviour
{
    private const string UnityAndroidPluginAndroidJavaClassName = "com.unitylearning.unityandroidplugin.UnityAndroidPlugin";
    private const string OpenUnityGameSettingsMethodName = "OpenUnityGameSettings";

    [SerializeField] private Button _openUnitySettingsButton;

    private void OnEnable()
    {     _openUnitySettingsButton.onClick.AddListener(HandleOnOpenUnityGameSettingsButtonClicked);
    }

    private void OnDisable()
    {     _openUnitySettingsButton.onClick.RemoveListener(HandleOnOpenUnityGameSettingsButtonClicked);
    }

    private void HandleOnOpenUnityGameSettingsButtonClicked()
    {
        OpenUnityGameSettings();
    }
    
    private void OpenUnityGameSettings()
    {
        using AndroidJavaClass androidJavaClass = new AndroidJavaClass(UnityAndroidPluginAndroidJavaClassName);
        androidJavaClass.CallStatic(OpenUnityGameSettingsMethodName);
    }
}

Unity打包Android APK运行

  • 点击Build进行打包。
  • 打包完成后可以将APK安装到Android Studio的模拟器上进行测试。
  • 点击Open Unity Game Settings按钮。
  • 此时就会从Unity的运行包跳转到Unity游戏的设置界面。
相关推荐
weixin_403810137 小时前
AI智能体写安卓自动化脚本教程:Cursor/Trae+CLI 实战,自然语言生成代码
android·人工智能·自动化·跨境电商·安卓自动化脚本·多账户运营
玖玥拾7 小时前
Unity3D RPG 入门项目(十一)主角完整战斗、怪物自动刷新、四大类型技能系统
游戏·3d·unity·游戏引擎
爱喝水的鱼丶8 小时前
SAP-ABAP:ABAP 用户出口参数传递与上下文获取:SAP 标准数据读取与交互逻辑实现
运维·性能优化·交互·sap·abap·经验交流·出口
Behaviour9 小时前
Unity AI 生态横评对比:官方 AI Beta / Unity CLI / 团结 Codely / 社区 MCP 四大阵营选型
人工智能·unity·ai·游戏引擎·aigc·ai编程
呆呆小孩9 小时前
零基础学 MySQL(上):从建库建表到增删改查,一篇搭好 SQL 基础
android·sql·mysql
catchadmin9 小时前
NativePHP v4 让 Blade 构建原生 iOS 与 Android 界面
android·ios·ai·php
FfHUCisI10 小时前
Golang 数据库连接池深度调优
android·数据库·golang
古法安卓13 小时前
Android-epoll原理详解
android·java·android studio
feixing_fx14 小时前
告别枯燥字体:Web 字体加载策略与 font-display 最佳实践
前端·css·前端框架·交互·css3
字节暗面15 小时前
四款 APP 加固强度测评:让 AI 拆了四个包,结果有点出乎意料
android·逆向工程·加固