Unity 3D与Android Studio安卓交互之-导出jar包

简介: u3d与安卓 jar 包交互本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) Chinar —— ...

u3d与安卓 jar 包交互


本文提供全流程,中文翻译。

Chinar 坚持将简单的生活方式,带给世人!

(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例)



Chinar —— 心分享、心创新!

助力快速理两者 jar 包方式的交互

为新手节省宝贵的时间,避免采坑!


Chinar 教程效果:
这里写图片描述



全文高清图片,点击即可放大观看 (很多人竟然不知道)


1

Create Android Module —— 创建安卓库模块


该过程,于新手来讲较为繁琐

另外导出 jar、arr 包创建 Module 的流程都一样

在此,为了便于新手理解

Chinar 直接提供另一个教程,专门做创建
举个栗子黑白88
请跳转 —— 安卓与Unity交互之-Android Studio创建Module库模块教程


2

Write Code in MainActivtity —— 在 Activity 中写代码


至此,所有的准备工作都已经做完!

我们在 Android Studio 安卓开发端,写2个 Android 端方法

然后,我们在 Unity 端写一个方法,测试通过安卓这边调用
举个栗子黑白88
这里写图片描述
安卓端代码如下:

package kim.unity.mylibrary;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;

public class MainActivity extends UnityPlayerActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);//注销掉这句,显示界面用的
    }


    //测试Android Studio的A方法,等待Unity调用
    //这里用中文名称当方法名,是为了便于理解。自己写,请不要用中文!
    public String 安卓方法A(String a,String b){return a+b;}


    //测试Android Studio的B方法,等待Unity调用
    public int 安卓方法B(int a,int b)
    {
        安卓端调用UnityMethodA();//调用下方方法
         return a+b;
    }


    //这是安卓调用Unity端的方法
    public void 安卓端调用UnityMethodA()
    {
        //UnityPlayer类中的静态方法
        //UnitySendMessage向Unity发送消息,
        //(Unity挂载脚本的物体,具体哪个方法,传入参数“安卓端调用”)
        UnityPlayer.UnitySendMessage("Main Camera","UnityMethodA","安卓端调用");
    }
}

3

Create C# Script —— 在 Unity中创建一个C#脚本


我们在 Unity 端写一个方法,通过安卓来调用

脚本挂在、主相机 Main Camera
举个栗子黑白88
Unity端代码如下:(脚本挂在主相机上)

using UnityEngine;
using UnityEngine.UI;


/// <summary>
/// 测试类,挂载相机上
/// </summary>
public class Chinar : MonoBehaviour
{
    public  Text              TextUp;   //上方文本框
    public  Text              TextDown; //下方文本框
    private AndroidJavaObject jo;       //私有jo对象


    void Start()
    {
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); //固定写法
        //固定写法、获取当前对象;返回一个 AndroidJavaObject对象
        //jo代表安卓当中的 当前MainActivity对象 
        jo              = jc.GetStatic<AndroidJavaObject>("currentActivity");
        string strCallA = jo.Call<string>("安卓方法A", "第一形参", "第二形参"); //用Call方法,去调用安卓端方法A
        TextUp.text     = strCallA;                                             //输出到文本框
        int strCallB    = jo.Call<int>("安卓方法B", 333, 333);                  //调用安卓端方法B
        TextUp.text     += "\n" + strCallB.ToString();                          //换行,输出到文本框
    }


    /// <summary>
    /// 这是Unity项目中的方法A
    /// </summary>
    /// <param name="a"></param>
    public void UnityMethodA(string a)
    {
        TextDown.text = a;
    }
}

4

Create Unity UI —— 在 Unity中创建简单的UI


注意:

由于通过 Android Studio 写的代码,在 Unity 中测试、调用,是会报错的

只有打包 APK ,并安装到手机上才可以测试!

我们简单的做一个 UI,创建一个 UI文本框,来测试输出
举个栗子黑白88
这里写图片描述


5

Make Module —— 构造库模块


回到 Android Studio ,选中我们创建的库 mylibrary

菜单栏点击 Build →→然后 Make Module 完成库模块的制作

另外,准备好我们下一步需要做的修改。
举个栗子黑白88
这里写图片描述


6

Export jar Package —— 导出 jar 包到Unity中


至此,准备工作全部做好!

下面,就要进入主题,开始完成 jar 包的导出到 Unity

从而与达到 Unity 交互
举个栗子黑白88


1. —— 切换到Project工程视图,找到我们需要的文件


注意:

切换到 Project 工程目录视图

找到我们需要的文件,然后右键 Show in Explorer 从外部打开

然后我们在外部对文件稍作修改后才能导入到 Unity
举个栗子黑白88
这里写图片描述


2. —— 修改 classes.jar 文件导入Unity


通过外部修改 Show in Explorer

切换到 Project 工程目录视图

找到我们需要的文件,然后右键 Show in Explorer 从外部打开

然后我们在外部对文件稍作修改后才能导入到 Unity
举个栗子黑白88
这里写图片描述


3. —— 修改AndroidManifest.xml,并导入Unity


工程目录视图,找打黄色的 mainifests / full / debug

同样通过 Show in Explorer 外部打开

记事本/ 或 Sublime Text 打开这里写图片描述,修改包名

不会/想要安装 Sublime Text 的朋友请↓↓

Sublime Text 3(中文)在Windows下的配置、安装、运行
举个栗子黑白88
这里写图片描述
这里写图片描述


7

PlayerSettings —— Unity打包App之前的设置


注意:

更改下 PlayerSettings 中的 Package Name

需要与 AndroidManifest.xml 中的包名保持一致
举个栗子黑白88
这里写图片描述


8

Build And Run —— Unity打包App测试


注意:

不能 Build And Run 是由于没有安装对应的安卓 StudioUSB 驱动

步骤对于新手来讲,较为麻烦。以后我会专门写博客来讲解流程

这里修改后包名后,直接打包成 APK 包即可!

将打包的 App 这里写图片描述拷贝到手机中,并且安装测试
举个栗子黑白88
这里写图片描述

至此:安卓与 Unity 导出 jar 交互操作完美结束!


9

Summarize ——总结


提示:

其实安卓导出 jar 包与 Unity 交互的操作很简单

这里我写的比较细致,只是怕新接触的朋友,采坑出错

一步步跟着我的做,即可完美完成!

多练习 3-5次,写好方法后,导包其实十几秒都能走一遍流程!


支持

May Be —— 搞开发,总有一天要做的事!


拥有自己的服务器,无需再找攻略!

Chinar 提供一站式教程,闭眼式创建!

为新手节省宝贵时间,避免采坑!


先点击领取 —— 阿里全产品优惠券 (享受最低优惠)


1 —— 云服务器超全购买流程 (新手必备!)

2 —— 阿里ECS云服务器自定义配置 - 购买教程(新手必备!)

3—— Windows 服务器配置、运行、建站一条龙 !

4 —— Linux 服务器配置、运行、建站一条龙 !



70

Chinar


END

本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com

对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

相关文章
|
20天前
|
前端开发 图形学 开发者
【独家揭秘】那些让你的游戏瞬间鲜活起来的Unity UI动画技巧:从零开始打造动态按钮,提升玩家交互体验的绝招大公开!
【9月更文挑战第1天】在游戏开发领域,Unity 是最受欢迎的游戏引擎之一,其强大的跨平台发布能力和丰富的功能集让开发者能够迅速打造出高质量的游戏。优秀的 UI 设计对于游戏至关重要,尤其是在手游市场,出色的 UI 能给玩家留下深刻的第一印象。Unity 的 UGUI 系统提供了一整套解决方案,包括 Canvas、Image 和 Button 等组件,支持添加各种动画效果。
47 3
|
23天前
|
API 开发工具 Android开发
Android Studio:解决AOSP自编译framework.jar引用不到的问题
在Android Studio中解决AOSP自编译framework.jar引用问题的几种方法,包括使用相对路径、绝对路径和通过`${project.rootDir}`动态获取路径的方法,以避免硬编码路径带来的配置问题。
34 0
Android Studio:解决AOSP自编译framework.jar引用不到的问题
|
2月前
|
Java
[JarEditor]可直接修改jar包的IDEA插件
### 修改JAR包变得更简单:JarEditor插件简介 **背景:** 开发中常需修改JAR包中的class文件,传统方法耗时费力。JarEditor插件让你一键编辑JAR包内文件,无需解压。 **插件使用:** 1. **安装:** 在IDEA插件市场搜索JarEditor并安装。 2. **修改class:** 打开JAR文件中的class,直接编辑,保存后一键构建更新JAR。 3. **文件管理:** 右键菜单支持在JAR内新增/删除/重命名文件等操作。 4. **搜索:** 使用内置搜索功能快速定位JAR包内的字符串。
255 2
[JarEditor]可直接修改jar包的IDEA插件
|
1月前
|
Java 网络安全 开发工具
UNITY与安卓⭐一、Android Studio初始设置
UNITY与安卓⭐一、Android Studio初始设置
|
20天前
|
vr&ar 图形学 API
Unity与VR控制器交互全解:从基础配置到力反馈应用,多角度提升虚拟现实游戏的真实感与沉浸体验大揭秘
【8月更文挑战第31天】虚拟现实(VR)技术迅猛发展,Unity作为主流游戏开发引擎,支持多种VR硬件并提供丰富的API,尤其在VR控制器交互设计上具备高度灵活性。本文详细介绍了如何在Unity中配置VR支持、设置控制器、实现按钮交互及力反馈,结合碰撞检测和物理引擎提升真实感,助力开发者创造沉浸式体验。
44 0
|
20天前
|
图形学 开发者 UED
Unity游戏开发必备技巧:深度解析事件系统运用之道,从生命周期回调到自定义事件,打造高效逻辑与流畅交互的全方位指南
【8月更文挑战第31天】在游戏开发中,事件系统是连接游戏逻辑与用户交互的关键。Unity提供了多种机制处理事件,如MonoBehaviour生命周期回调、事件系统组件及自定义事件。本文介绍如何有效利用这些机制,包括创建自定义事件和使用Unity内置事件系统提升游戏体验。通过合理安排代码执行时机,如在Awake、Start等方法中初始化组件,以及使用委托和事件处理复杂逻辑,可以使游戏更加高效且逻辑清晰。掌握这些技巧有助于开发者更好地应对游戏开发挑战。
43 0
|
20天前
|
开发者 图形学 Java
Unity物理引擎深度揭秘:从刚体碰撞到软体模拟,全面解析实现复杂物理交互的技巧与秘诀,助你打造超真实游戏体验
【8月更文挑战第31天】物理模拟在游戏开发中至关重要,可让虚拟世界更真实。Unity作为强大的跨平台游戏引擎,内置物理系统,支持从刚体碰撞到布料模拟的多种功能。通过添加Rigidbody组件,可实现物体受力和碰撞;使用AddForce()施加力;通过关节(如Fixed Joint)连接刚体以模拟复杂结构。Unity还支持软体物理,如布料和绳索模拟,进一步增强场景丰富度。掌握这些技术,可大幅提升游戏的真实感和玩家体验。
29 0
|
2月前
|
弹性计算 Java Serverless
Serverless 应用引擎操作报错合集之上传自定义JAR包,启动时报错,是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
2月前
|
关系型数据库 Java 分布式数据库
PolarDB产品使用问题之部署到服务器上的Java应用(以jar包形式运行)无法连接,如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。

热门文章

最新文章