美文网首页
一、12、unity作为库集成到Android应用中

一、12、unity作为库集成到Android应用中

作者: GameObjectLgy | 来源:发表于2024-01-12 07:21 被阅读0次

这一次使用一下Unity官方给的示例来实现把Unity集成到安卓应用。

一、版本说明

Android Studio:Android 3.6.1
Android Gradle Plugin Version:3.3.2
Gradle Version:4.10.1
Unity:2019.3.4f1


1.png
安卓工程准备

1、如果没有对应的AndroidStudio版本,下载安装对应的版本,有可能会遇到首次启动启动不了问题。
在Android安装目录/bin/idea.properties这个文件的最后加上下面这句话。
disable.android.first.run=true

2、做安卓开发还是离不开梯子的,得准备好梯子。
File->Settings->System Settings->Http Proxy
我这里选择的是Manual proxy configuration。


2.png

3、建Empty Activity工程。


3.png

1、首次新建工程后一般进来后不出意外Gradle都是会失败的,可以选择直接关闭掉Gradle的下载。然后自己手动选择。
File->Project Structure
选择你自己本地已经下载有的版本。
2、SDK版本选择和Unity一样的版本,能避免很多各种各样层出不穷的兼容问题。
3、我查阅了一下Unity2019版本,要使用1.8版本的JDK。在unity工程中,我是直接使用的是编辑器自带的JDK。在Android中,我这里手动选择了C盘的Java1.8。
4、尝试进行Gradle和打包,确认都没问题。

Unity工程准备

1、切换到安卓平台,勾选Export


5.png

2、OtherSetting


6.png
10.png

3、导出到与Asset同目录的androidBuild文件夹

将Unity导出的库工程作为库融合到安卓工程中

1、参照官网文档的步骤
https://github.com/Unity-Technologies/uaal-example/blob/uaal-example/19LTS-21LTS/docs/android.md

2、整个工程的settings.gradle。让Unity这个Module作为一个库的形式加入工程。
加入如下代码

include ':unityLibrary'
project(':unityLibrary').projectDir=new File('..\\UnityProject\\androidBuild\\unityLibrary')
7.png

3、工程的build.gradle。让依赖可以从 unityLibrary中获取。


1705049431863.png

4、App的build.gradle加入对unity库的依赖。
implementation project(':unityLibrary')
implementation fileTree(dir: project(':unityLibrary').getProjectDir().toString() + ('\libs'), include: ['*.jar'])

5、如果是Unity2023版本的话还需要拷贝unity导出的工程gradle.properties里的内容整合到安卓工程。这里目前不需要。可以先Sync一下,看看有没有报错。一般情况下,会报错找不到一个资源,还需设置下面的内容。
unityStreamingAssets=.unity3d, google-services-desktop.json, google-services.json, GoogleService-Info.plist

6、有可能会遇到的一启动App进入到unity的Activity时出现闪退问题。
这时需要在App的strings.xml里面加入一句:
<string name="game_view_content_description">Game view</string>


8.png
安卓调起Unity
](https://img.haomeiwen.com/i13721461/d7c397ea077fa015.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

package com.example.myandroidapp;


import android.app.Application;
import android.content.Context;

public class MainActivity extends Application {

    public  static Context sContext;
    @Override
    public  void onCreate()
    {
        super.onCreate();
        sContext = getApplicationContext();
    }
}
package com.example.myandroidapp;

import android.os.Bundle;

import com.unity3d.player.UnityPlayerActivity;

public class MyUnityActivity extends UnityPlayerActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //new Test();
    }
}

9.png

相关文章

网友评论

      本文标题:一、12、unity作为库集成到Android应用中

      本文链接:https://www.haomeiwen.com/subject/oqetodtx.html