从没接触过unity,但是实习的时候需要了解

  • Android

在android启动一个网页,很简单

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

但是在unity中就不是这样啦,那如何操作呢。
首先我们新建一个AS工程

android如何调用unity3d android调用unity界面_android如何调用unity3d


应用名建议填写 你准备发布的包名

例如cn.krisez.demo 就写demo

接下来一直next就Ok 当然api建议选择4.0以上(别问我为什么)

接下来进入我们的unity安装地址

C:\Program Files\Unity 2018.1.0b9\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\

找到class.jar复制到我们AS得libs文件夹下面

然后就以来我们的jar包(不会请谷歌Or百度)

等工程创建好后,进入build.gradle(app)

1. apply plugin: ‘com.android.application’ 修改为 apply plugin: ‘com.android.library’

2. applicationId 这一行删除

3.

android如何调用unity3d android调用unity界面_android_02


只留下如图

android如何调用unity3d android调用unity界面_xml_03


4. 最后Android里的重要组件Activity 删了emmmmm删了。。。

因为Unity在生成APK文件的时候,会自己有一个Activity(UnityPlayerActivity),因为游戏只有一个Activity就好了其他的再说,对吧。

5. 接着为了我们能够交互,我们java要有一个代码,取名Utils.java

public class Utils {
    public static void startAnother(Activity activity){
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("http://www.krisez.cn"));
        activity.startActivity(intent);
    }
}

由于我们没有了activity,所以我们的AndroidMainfest.xml类似于:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.krisez.air">
    <application  android:label="@string/app_name"></application>
</manifest>

最后结构就是这样

android如何调用unity3d android调用unity界面_xml_04


然后我们开始run,但是我们修改了gradle文件 所以现在我们选择

android如何调用unity3d android调用unity界面_xml_05


接着等它build结束,我们把视图切回project,我们就能找到这个aar文件了

android如何调用unity3d android调用unity界面_java_06


我们把它复制到桌面上,或者放在这,别动AS了

  • Unity

现在我们打开Unity,新建一个项目,都默认就好了

首先找到我们的project视图

我们要在里面创建如下所示,Plugins根目录就是Assets

android如何调用unity3d android调用unity界面_android_07


选择我们的app-release右键选择Show In Explorers删除.mate文件

然后打开我们的压缩包aar文件,找到libs文件夹,里面有我们的jar包(unity的)删除它。ok完成回到我们的unity。

打开了Unity,我们在这里

android如何调用unity3d android调用unity界面_xml_08


创建一个button,同时Unity会自动帮我们创建好Canvas和EventSystem

接着点击Canvas,选择

android如何调用unity3d android调用unity界面_xml_09


如图所示,选择camera视角同时绑定camera

接着我们Create一个C#脚本(没有Js了开始习惯吧,我也才接触啊)挂在到canvas上面(直接拖过去就好了)

接着我们编写脚本

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

public class Click : MonoBehaviour {
    private AndroidJavaObject jo;
    // Use this for initialization
    void Start () {
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");//初始化
        jo = jc.GetStatic<AndroidJavaObject>("currentActivity");//得到activity

    }

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

    }

    public void Show()
    {
        AndroidJavaClass ajc = new AndroidJavaClass("cn.krisez.air.Utils");//得到自己写的类
        ajc.CallStatic("startAnother",jo);
    }
}

我们选择将canvas(因为脚本挂在这玩意上面)添加到button的onclick()中

然后我们选择方法如下图

android如何调用unity3d android调用unity界面_android如何调用unity3d_10


最后我们打包File->Build Settings->android->switch platform->player settings

我们能看到Inspector有我们的设置信息

Company Name 公司名 不能默认

Product Name 产品名 不能默认

然后我们找到other setting

填入我们的app信息了

Color Space选择Gamma

其他不管,接着我们的Identification的内容

packgename 包名 你AS的包是撒 就写撒,别瞎写

然后其他默认就好(如果你要签名,选择publishing settings按要求填就Ok )


最后我们Build得到Apk,安装测试,完成。这里就不贴图了。有问题请请说