相关文章推荐
逆袭的圣诞树  ·  Android ...·  2 周前    · 
深情的可乐  ·  Android ...·  9 小时前    · 
刚分手的椰子  ·  chatGPT ...·  1 月前    · 
淡定的松鼠  ·  Vite真香之路 - 掘金·  1 年前    · 

基础知识相关文章: https://blog.csdn.net/jiaxunnanling/article/details/89947744

新建工程,并引入Unity内置jar包相关文章: https://blog.csdn.net/jiaxunnanling/article/details/90268239

二.如何扩展

由于Unity发布Android的Apk时,只包含一个主Acitivity,俗称MainActivity,可以通过扩展该Activity,达到预期效果。通过引入Unity内置的Android的Jar库,并继承库中的UnityPlayerActivity。

Unity内置的Android的Jar库地址在Unity目录: Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes

其中classes.jar就是Unity内置的Android的Jar库,这是扩展MainActivity需要使用的库。

Unity在发布Android的Apk时

如果没有在目录 Plugins/Android(Unity特殊目录) 存放AndroidManifest文件,Unity会使用默认的AndroidManifest文件 。

如果存在AndroidManifest文件,Unity会使用该AndroidManifest文件替换默认的AndroidManifest

扩展Unity的MainActivity时,注意AndroidManifest配置的主要Activity入口,例如使用自己扩展的AndroidManifest代替Unity默认的AndroidManifest,这样Activity入口就是我们自定义的Activity入口。

关于AndroidManifest的合并,可以参考基础知识: https://blog.csdn.net/jiaxunnanling/article/details/89947744

三. 案例演示(导出Arr包)

如何引入Unity内置的jar包可以参考 : https://blog.csdn.net/jiaxunnanling/article/details/90268239

在模块的这个目录下,右键新建一个空的Activity,不知道新建模块的可以参考:

https://blog.csdn.net/jiaxunnanling/article/details/90268239

目录结构,移除不必要的东西

修改MainAcitivity的代码,继承UnityPlayerActivity

package com.huowu.add;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 

修改AndroidManifest的文件内容,可以从其他地方复制过来再修改 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.huowu.add">
<application
    android:label="@string/app_name"
    android:usesCleartextTraffic="true">
    <activity
        android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <meta-data
            android:name="unityplayer.UnityActivity"
            android:value="true" />
    </activity>
</application>
</manifest>

 在MainActivity中,添加一个加法运算方法,相当于扩展UnityPlayerActivity的功能

package com.huowu.add;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    //加法运算
    public int Add(int num1,int num2)
        int sum = num1 + num2;
        return sum;
 

新建脚本,AndroidToUnity,挂载到UI文本组件上界面,涉及到的内容,可以参考基础知识:https://blog.csdn.net/jiaxunnanling/article/details/89947744

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using  UnityEngine.UI;
public class AndroidToUnity : MonoBehaviour
    public Text text; //用来显示结果值
    private AndroidJavaClass androidJavaClass; //获取Unity发布的唯一MainActivity类
    private AndroidJavaObject androidJavaObject;//获取Activity对象
    public void Awake()
         text = this.GetComponent<Text>();
        //Unity要导出的MainActivity类
            androidJavaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        //获取MainActivity的实例对象
           androidJavaObject = androidJavaClass.GetStatic<AndroidJavaObject>("currentActivity");      
    public void Start()
        Add();
    public void Add()
        //调用Android写好的add的方法,并传参,获取结果值
        int sum = androidJavaObject.Call<int>("Add",5,5);
        text.text = "从Android计算出来的值为:" + sum;
 

 发布APK,运行在模拟器的结果

四. 导出Jar包

Build Module后,打开目录build=>intermediates=>packaged-classes=>debug

以及 build=>intermediates=>manifest=>full=>debug

(注意我的AndroidStudio版本是3.1.3,其余的版本的目录可能不一样)

 复制build=>intermediates=>packaged-classes=>debug中的classes,该目录下的libs是我们之前引用的Unity内置jar包,所以不需要复制出来,如果是其他jar包就需要一同复制出来。

复制 build=>intermediates=>manifest=>full=>debug目录下的AndroidManifest文件。

把classes和AndroidManifest文件一起导入的Unity工程下的Assets/Plugins/Android目录下,按照导出arr包时,编写AndroidToUnity一样,运行的效果是一样的。

区别在于Jar包没有过多的文件,相关联的文件需要自己去找。

Arr包已经把涉及到的资源都整理成一套了。

一.前序准备基础知识相关文章:https://blog.csdn.net/jiaxunnanling/article/details/89947744新建工程,并引入Unity内置jar包相关文章:https://blog.csdn.net/jiaxunnanling/article/details/90268239二.如何扩展由于Unity发布Android的Apk时,只... 打开Android Studio -> Start a new Android Studio Project -> Empty Activity , 一路Next Application name: ‘`UnityTest’ Company domain: ‘ffim.c
Unity工程里调用安卓的方法,需要用到JAR包。此文档主要介绍了三种导出JAR包和调用JAR包的方法。 使用方法1,需要修改程序的主Activity,所以可以在程序的生命周期做一些初始化和其他工作。 使用方法2,不需要修改主Activity,并可同时使用多个JAR包。 使用方法3,Unity脚本中的方法可以被JAR包内调用,通常用来接受广播并将信息发送到Unity。 1. 继承主Ma...
一.Android导出jar或aar包到Unity 当在Android Studio开发时,将unity的jar包导入后,可自定义一个类继承自com.unity3d.player.UnityPlayerActivity import com.unity3d.player.UnityPlayerActivity; public class MainActivity extends UnityPlayerActivity { @Override protected void onCreat
首先我的平台:Unity2019.4.4f1+Android Studio 第一步在Android Studio上创建一个空项目 然后,在这里设置你的项目名,包名,项目位置,语言和最小支持的SDK,完成 完成后你会看到一个这样的目录右键这个目录选择new->moudel,选择Android Library 然后在这里设置你的moudel名,包名,语言和最小支持的SDK,完成 然后点击这个三角将你的资源视图改为project 然后在你的Unity安装目录下的Editor\Data\PlaybackE
Unity Android 交互 Unity Android 交互Unity Android 交互三 多 aar 接入 Unity 自动合并多个 AndroidManifest.xml Unity Android SDK 接入 讯飞 SDK 实战之前使用 Eclipse 导出 jar 包导入 Unity 交互,下面使用 Android Github源码:[点我获取源码] 索引Main主程序简介使用Main主循环调用其他模块ScriptingDefine 脚本定义Main Data 全局数据License 授权许可Parameter 全局参数 Main主程序简介 Main为框架的主模块,提供访问其他模块的快捷接口,还支持快捷宏定义、指定全局主要数据类、设置项目授权、以及配置全局参数等。 使用M.........
使用Unity启动关闭进程,包括进程的挂起与继续前言一、pandas是什么? 在unity的开发中,有时需要通过当前的unity程序取控制其他程序的开启与关闭,这时就需要一些进程的操作,可以参考以下的代码。 这些代码都是我根据自己的需求,从网上找的材料,然后改写的,参考的网址我会放在文章的最后。有些代码的含义我也还没有搞明白,发现问题欢迎指正。 一、pandas是什么? 进程访问枚举,无符号整型 public enum ProcessAccess : uint { /// <summar