Unity3D嵌入Android应用的方法

相关问题:

关屏幕再开屏幕导致重启问题

Sdk接入一定涉及到安卓既接入和通信,虽然现在很多sdk只要打一下母包就可以出n个渠道的包,不过母包还是要接入安卓

这次教程分两部分

第一部分:unity接入安卓

首先我们先确定一下unity里面的包名

app里吗 unity能嵌入到Android unity导入安卓_Android

1.在eclipse新建安卓应用工程

File->New->Android application project

然后名字和unity一一对应,注意大小写问题

app里吗 unity能嵌入到Android unity导入安卓_unity接入安卓_02

2.不创建icon,然后下一步

app里吗 unity能嵌入到Android unity导入安卓_Android_03

3.创建一个空白的activity,然后下一步

app里吗 unity能嵌入到Android unity导入安卓_unity安卓接入_04

4.点完成

5.创建完成之后的项目

app里吗 unity能嵌入到Android unity导入安卓_unity接入安卓_05

6.把下图圈着的删除掉(layout,styles.mxl,values-v11,values-v14)

app里吗 unity能嵌入到Android unity导入安卓_unity安卓接入_06

7.删除之后会出现报错,先打开androidmanifest,删除报错地方,如下图

app里吗 unity能嵌入到Android unity导入安卓_unity接入安卓_07

8.继续打开mainactivity.java,同样删除报错地方

app里吗 unity能嵌入到Android unity导入安卓_Android_08

9.右键项目(Snoopy)->Properties,打开如下图,然后选Android->选中appcompat_v7->remove->OK,

app里吗 unity能嵌入到Android unity导入安卓_unity安卓通信_09

10.右键项目(Snoopy)->Properties,然后选Java build Path-—》libraries-》Add external JARS

app里吗 unity能嵌入到Android unity导入安卓_unity接入安卓_10

app里吗 unity能嵌入到Android unity导入安卓_unity安卓接入_11

然后导入unity对应的Classes.Jar,最后点OK完成

11.导完classes之后打开MainActivity

把Activity改成UnityPlayerActivity

这里要导入import com.unity3d.player.UnityPlayerActivity;

app里吗 unity能嵌入到Android unity导入安卓_Android_12

12.最后要导出Jar包给unity 项目右键-》Export-》JAR file

app里吗 unity能嵌入到Android unity导入安卓_unity安卓通信_13

13.如下图所示只勾选Src其他设置不变,然后设置导出目录,最后点finish就可以

app里吗 unity能嵌入到Android unity导入安卓_unity接入安卓_14

14.回到unity工程创建文件夹Assets\Plugins\Android,在Android文件夹下创建libs文件夹,把上面导出的jar包放了libs里面(放bin文件夹也可以:Android文件夹创建bin文件夹)

app里吗 unity能嵌入到Android unity导入安卓_教程_15

15.最后把安卓工程的AndroidManifes和res文件夹放到Unity里面的Android文件夹

app里吗 unity能嵌入到Android unity导入安卓_教程_16

app里吗 unity能嵌入到Android unity导入安卓_unity接入安卓_17

16.unity接入安卓就这样,然后打包测试一下会不会闪退之类

一般闪退都是安卓包名和unity设置的包名不一致导致的

打包安卓报错,把buildSystem改成Internal,如下图

app里吗 unity能嵌入到Android unity导入安卓_unity接入安卓_18

第二部分:unity和安卓之间通信

1.Unity调用安卓方法

登录后复制


AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        jo.Call("CallUnity");
        jo.Call("CallUnity1","abc");
        
        

关键代码

AndroidJavaObject.Call("方法名",参数(可不填))

2.Android发数据给Unity

登录后复制


public void CallUnity()
    {
    	UnityPlayer.UnitySendMessage("TestGameObj", "Test1", "1");
    }
    
    public void CallUnity1(String name)
    {
    	UnityPlayer.UnitySendMessage("TestGameObj", "Test2", name);
    }
    
    

TestGameObj是场景一个gameobject的名字

Test1是TestGameObj所挂脚本上面的一个方法

“1”是发给unity参数

3.测试完整代码

unity代码

登录后复制


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

public class test : MonoBehaviour
{
    public Text text;
    public Text text2;

    // Use this for initialization
    void Start ()
    {
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        jo.Call("CallUnity");
        jo.Call("CallUnity1","abc");
    }


    public void Test1(string name)
    {
        text.text = name;
    }

    public void Test2(string name)
    {
        text2.text = name;
    }
}

安卓代码

登录后复制


package com.Snoopy.AndroidTest;

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

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends UnityPlayerActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    
    public void CallUnity()
    {
    	UnityPlayer.UnitySendMessage("TestGameObj", "Test1", "1");
    }
    
    public void CallUnity1(String name)
    {
    	UnityPlayer.UnitySendMessage("TestGameObj", "Test2", name);
    }
}

测试场景,创建空Gameobject命名TestGameObj,因为上面的安卓代码是给这个TestGameObj发消息所以命名这个,添加test组件,TestGameObj所挂的脚本有Test1和Test2方法就行,把对应的ui拖上去打包安卓包测试

app里吗 unity能嵌入到Android unity导入安卓_unity安卓通信_19

测试结果

app里吗 unity能嵌入到Android unity导入安卓_Android_20

教程就到这里

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空