栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

【Android】Android与Unity通信(图文详细)

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Android】Android与Unity通信(图文详细)

安卓与Unity通信(1)
    • 安卓
      • 1.创建一个安卓空项目
      • 2.导入classes.jar
      • 3、编写MainActivity
      • 4、src文件
      • 5、build.gradle文件
      • 6、Rebuild Project
    • Unity
      • 1、创建一个unity项目
      • 2、添加app-debug.aar文件
      • 3、创建一个UI按钮
      • 4、在unity里build
    • 运行

通过导入Unity的classes.jar,继承unity的UnityPlayerActivity实现unity与安卓的交互

安卓 1.创建一个安卓空项目

我将其更名为unitytoandroid

记住选择的API等级,在unity中会用到,如图我用的是API21,Android5.0

创建好后,as默认打开是在Android结构下

我们将其切换到Project结构目录下

2.导入classes.jar
  1. 导入unity的jar包

    在unity的安装目录下找到classes.jar文件,并将其复制到as的libs文件下D:UnityUntiyDownLoad2020.3.26f1c1EditorDataPlaybackEnginesAndroidPlayerVariationsmonoReleaseClasses

  2. 右键classes.jar,选择add as library,点击ok,完成classes.jar文件的导入

3、编写MainActivity

在MainActivity中编写通信代码,如果显示没有UnityPlayerActivity,则在unity的安装目录下D:UnityUntiyDownLoad2020.3.26f1c1EditorDataPlaybackEnginesAndroidPlayerSourcecomunity3dplayer找到UnityPlayerActivity.java这个类,这是因为在2019版以后的unity中UnityPlayerActivity.java不再放在classes.jar中

找到这个类之后将其放在com.example.unitytoandroid包目录下,与MainActivity同级

这样就不会再出现报错

然后在MainActivity中编写通信代码,

package com.example.unitytoandroid;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

public class MainActivity extends UnityPlayerActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }
	
    //在unity中调用的测试方法,负责打印从unity中传来的字符串
    public void TestAndroid(String val){
        Log.i("unity",val);
    }
}
4、src文件

把src文件下的所有文件删除,打开AndroidManifest.xml文件,删除当中的报错代码,有时也不会报错但也要删除否则在unity中运行时也会报错,删除后AndroidManifest.xml文件代码应如下

删除后AndroidManifest.xml文件中应该只有两行代码

5、build.gradle文件

有三处要改

1、 将plugins {
id 'com.android.application'
}更改为

plugins {
    id 'com.android.library'
}

2、 并且删除applicationId "com.example.unitytoandroid"

3、 修改implementation files(‘libsclasses.jar’)为compileOnly files(‘libsclasses.jar’)

compileOnly files('libs\classes.jar')
6、Rebuild Project

在上方工具栏找到Build->Rebuild project,成功运行出来,我们便得到了aar文件

Unity 1、创建一个unity项目

创建一个Unity项目将其切换到安卓平台

2、添加app-debug.aar文件

把app-debug.aar文件添加到unity中,并将其解压获取AndroidManifest.xml文件,同样放在同级文件下

如果电脑没有解压aar格式的软件,可以复制一份aar文件,更改后缀名为zip然后解压,取出AndroidManifest.xml文件,双击打开可以查看AndroidManifest.xml文件里的内容

3、创建一个UI按钮

在unity中创建一个UI按钮,并编写一个脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    public void TestAndroid()
    {
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject jo = jc.GetStatic("currentActivity");
        jo.Call("TestAndroid", "this is unity");
    }
}

将脚本挂在Button上

4、在unity里build

build之前要确保unity中API的等级设置要与AS中的一样

运行

在手机上点击按钮,as中弹出提示,标识通信成功

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/906512.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号