一、12、unity作為庫(kù)集成到Android應(yīng)用中

這一次使用一下Unity官方給的示例來實(shí)現(xiàn)把Unity集成到安卓應(yīng)用。

一、版本說明

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


1.png
安卓工程準(zhǔn)備

1、如果沒有對(duì)應(yīng)的AndroidStudio版本,下載安裝對(duì)應(yīng)的版本,有可能會(huì)遇到首次啟動(dòng)啟動(dòng)不了問題。
在Android安裝目錄/bin/idea.properties這個(gè)文件的最后加上下面這句話。
disable.android.first.run=true

2、做安卓開發(fā)還是離不開梯子的,得準(zhǔn)備好梯子。
File->Settings->System Settings->Http Proxy
我這里選擇的是Manual proxy configuration。


2.png

3、建Empty Activity工程。


3.png

1、首次新建工程后一般進(jìn)來后不出意外Gradle都是會(huì)失敗的,可以選擇直接關(guān)閉掉Gradle的下載。然后自己手動(dòng)選擇。
File->Project Structure
選擇你自己本地已經(jīng)下載有的版本。
2、SDK版本選擇和Unity一樣的版本,能避免很多各種各樣層出不窮的兼容問題。
3、我查閱了一下Unity2019版本,要使用1.8版本的JDK。在unity工程中,我是直接使用的是編輯器自帶的JDK。在Android中,我這里手動(dòng)選擇了C盤的Java1.8。
4、嘗試進(jìn)行Gradle和打包,確認(rèn)都沒問題。

Unity工程準(zhǔn)備

1、切換到安卓平臺(tái),勾選Export


5.png

2、OtherSetting


6.png

10.png

3、導(dǎo)出到與Asset同目錄的androidBuild文件夾

將Unity導(dǎo)出的庫(kù)工程作為庫(kù)融合到安卓工程中

1、參照官網(wǎng)文檔的步驟
https://github.com/Unity-Technologies/uaal-example/blob/uaal-example/19LTS-21LTS/docs/android.md

2、整個(gè)工程的settings.gradle。讓Unity這個(gè)Module作為一個(gè)庫(kù)的形式加入工程。
加入如下代碼

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

3、工程的build.gradle。讓依賴可以從 unityLibrary中獲取。


1705049431863.png

4、App的build.gradle加入對(duì)unity庫(kù)的依賴。
implementation project(':unityLibrary')
implementation fileTree(dir: project(':unityLibrary').getProjectDir().toString() + ('\libs'), include: ['*.jar'])

5、如果是Unity2023版本的話還需要拷貝unity導(dǎo)出的工程gradle.properties里的內(nèi)容整合到安卓工程。這里目前不需要??梢韵萐ync一下,看看有沒有報(bào)錯(cuò)。一般情況下,會(huì)報(bào)錯(cuò)找不到一個(gè)資源,還需設(shè)置下面的內(nèi)容。
unityStreamingAssets=.unity3d, google-services-desktop.json, google-services.json, GoogleService-Info.plist

6、有可能會(huì)遇到的一啟動(dòng)App進(jìn)入到unity的Activity時(shí)出現(xiàn)閃退問題。
這時(shí)需要在App的strings.xml里面加入一句:
<string name="game_view_content_description">Game view</string>


8.png
安卓調(diào)起Unity
](https://upload-images.jianshu.io/upload_images/13721461-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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容