欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android內(nèi)嵌Unity并實現(xiàn)互相跳轉的實例代碼

 更新時間:2020年11月09日 09:15:33   作者:木小郭  
這篇文章主要介紹了Android內(nèi)嵌Unity并實現(xiàn)互相跳轉的實例代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

說明

本案例使用Unity2019.3.8f1與AndropidStudio3.6.3

源碼git地址:https://github.com/guochaolinDLKF/UnityAndAndroid.git

下面是效果

創(chuàng)建Unity項目

首先創(chuàng)建一個Unity空項目

在空場景中創(chuàng)建一個空節(jié)點名字為unityObject,注意:這個名字是等會再Android中向Unity發(fā)送消息時的API中必須要傳的參數(shù)

然后在節(jié)點上添加一個腳本,腳本中的代碼如下:

using UnityEngine;
using UnityEngine.UI;
 
public class Test : MonoBehaviour
{
  public Button btn;
  AndroidJavaObject jo;
  private void Awake()
  {
    AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
    btn.onClick.AddListener(CallAndroid);
  }
  public void CallAndroid()
  {
    jo.Call("ShowToast");//調用Android中函數(shù)
    Debug.Log("點擊按鈕");
    System.Console.WriteLine("點擊按鈕");
  }
 
  void fromAndroid(string str)
  {
    Debug.Log("安卓傳來信息 : " + str);
    System.Console.WriteLine("安卓傳來信息 : " + str);
  }
}

然后在Build Settings中將平臺切換到Android

按照上圖的指示操作

然后在Player Settings中設置Other Settings中的PackageName這個必須要與Android中的包名一致,不一致可不可以?也行,反正我試著是可以的,我用的手機是小米9pro,其他機型沒試過

最后設置Minimum API Level 要與AndroidStudio中保持一致,這個如果不一致,在AndroidStudio中發(fā)布時鐵定會報錯

簽名呢?需要設置么?我這里沒有設置,但是之前設置了也能正常運行,這里跟簽名應該沒有太大關系

我的都沒有設置,看下圖

接下來就需要在首選項(Edit->Preferences->External)中設置Android的JDK、和SDK了,JDK據(jù)說最好是7或者8,最好不要是9,反正我的是8

再然后就是點擊Build Settings中的Export導出Android中需要的項目,導出的文件夾與Unity項目的關系,如果你是第一次看著我的博客教程跟著做,那么請按照我的文件夾的命名與結構來做,因為在AndroidStudio中需要根據(jù)路徑引入Unity發(fā)布出來的安卓項目

Unity項目目錄與安卓項目目錄之間的關系

至此,Unity中設置已經(jīng)完成

創(chuàng)建安卓項目

選擇NoActivity->Next

創(chuàng)建完成后,開始導入Unity Build出來的包

注意:前提是創(chuàng)建出來的空的Android項目下方?jīng)]有任何報錯才可以,像下圖一樣

然后選擇settings.gradle文件添加代碼

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

上面代碼中new File('這里表示unity發(fā)布出來的項目的路徑')

選擇 build.gradle(Module:app)添加 dependencies

 implementation project(':unityLibrary')
  implementation fileTree(dir: project(':unityLibrary').getProjectDir().toString() + ('\\libs'), include: ['*.jar'])

添加引入SO庫架構,如果不添加,構建出來的app運行時會閃退,并且報錯:can not find 'libmain.so'

還是在這個build.gradle中

ndk {
      // 設置支持的SO庫架構,第三方給的so庫哪幾種架構,就配置這幾種架構
      abiFilters 'armeabi', 'armeabi', 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
    }

選擇 build.gradle(Module:NativeAndroidApp)

allprojects {
  repositories {
    google()
    jcenter()
 
    // Add Code
    flatDir {
      dirs "${project(':unityLibrary').projectDir}/libs"
    }
    // End
  }
}

選擇 NativeAndroidApp 的 strings.xml 添加

 <string name="game_view_content_description">Game view</string>

最后點擊AndroidStudio的SyncProject經(jīng)過編譯,左邊就會出現(xiàn)unity發(fā)布出來的項目的Moudles

至此安卓配置完成

編寫安卓代碼

在包名上右鍵創(chuàng)建兩個Activity,下圖中,我已經(jīng)創(chuàng)建好了

MainActivity

package com.Wish.UnityProject;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
 
public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_unity);
    Button btn=(Button) findViewById(R.id.button);
    btn.setOnClickListener(new View.OnClickListener(){
      @Override
      public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, UnityActivity.class);
        startActivity(intent);
      }
    });
  }
}

創(chuàng)建一個按鈕,按下按鈕跳轉到Unity中

雙擊.xml文件

將下圖中的Button拖拽到白框內(nèi)

對按鈕進行設置

然后回調MainActivity中,就不會有報錯了

創(chuàng)建UnityActivity類

package com.Wish.UnityProject;
 
import android.content.Intent;
import android.os.Bundle;
 
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
 
public class UnityActivity extends UnityPlayerActivity {
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    testSendMessage();
  }
  // 向unity發(fā)送信息
  public void testSendMessage()
  {
    //第一個參數(shù)是Unity中一個節(jié)點對象的名字,第二個參數(shù)是節(jié)點對象上掛的腳本中一個函數(shù)的名字,第三個參數(shù)是函數(shù)中的參數(shù)值
    UnityPlayer.UnitySendMessage("unityObject", "fromAndroid", "test");
  }
  // 接收unity信息
  public void ShowToast()
  {
    // unity點擊按鈕跳轉回安卓界面
    Intent intent = new Intent(this, MainActivity.class);
    this.startActivity(intent);
  }
}

如果UnityPlayerActivity變成紅色,說明沒有引入,只需要將鼠標光標放到UnityPlayerActivity這句代碼上,然后按下鍵盤Alt+Enter鍵,就可以了自動引入了

設置app下面的AndroidManifest.xml文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.Wish.UnityProject">
 
  <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
      android:name="com.Wish.UnityProject.MainActivity">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
 
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
    </activity>
    <activity android:name="com.Wish.UnityProject.UnityActivity">
 
    </activity>
 
  </application>
 
</manifest>

其中下面的代碼所在的activity,就是程序一開始進入的界面,也就是安卓界面,

<action android:name="android.intent.action.MAIN" />
 
 <category android:name="android.intent.category.LAUNCHER" />

修改unityLibrary下面的AndroidManifest.xml文件

至此安卓端代碼已經(jīng)寫完

發(fā)布安卓APP到手機

點擊菜單欄中Build->RebuildProject構建項目

將手機連接到電腦,并且調成USB調試模式中的傳輸文件模式

按下下圖按鈕,便會發(fā)布到手機中并自動運行

參考文章:

https://www.cnblogs.com/zhxmdefj/p/13273560.html

https://blog.csdn.net/mediary/article/details/103050516

https://blog.csdn.net/qq_37310110/article/details/98056148

到此這篇關于Android內(nèi)嵌Unity并實現(xiàn)互相跳轉的文章就介紹到這了,更多相關Android內(nèi)嵌Unity互相跳轉內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Android多線程處理機制中的Handler使用介紹

    Android多線程處理機制中的Handler使用介紹

    本文將為大家介紹下Android的Handler的使用方法,Handler可以發(fā)送Messsage和Runnable對象到與其相關聯(lián)的線程的消息隊列,感興趣的朋友可以了解下哈
    2013-06-06
  • Android實現(xiàn)圖片裁剪和上傳

    Android實現(xiàn)圖片裁剪和上傳

    這篇文章主要為大家詳細介紹了Android實現(xiàn)圖片的裁剪和上傳,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Android使用MMKV的記錄

    Android使用MMKV的記錄

    聽說騰訊的mmkv很牛皮,可以替代SharedPreferences,主要用來保存設置,比如串口號、波特率、攝像頭預覽角度等等,本文重點給大家介紹Android使用MMKV的記錄分享,感興趣的朋友一起看看吧
    2021-10-10
  • Android和JavaScript相互調用的方法

    Android和JavaScript相互調用的方法

    這篇文章主要介紹了Android和JavaScript相互調用的方法,實例分析了Android的WebView執(zhí)行JavaScript及JavaScript訪問Android的技巧,需要的朋友可以參考下
    2015-12-12
  • Android10自動連接WiFi問題的解決

    Android10自動連接WiFi問題的解決

    這篇文章主要介紹了Android10自動連接WiFi問題的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Android通過wifi連接手機(不需要root)

    Android通過wifi連接手機(不需要root)

    這篇文章主要為大家詳細介紹了Android通過wifi連接手機,不需要root,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Android編程基于重力傳感器實現(xiàn)橫豎屏放向切換功能

    Android編程基于重力傳感器實現(xiàn)橫豎屏放向切換功能

    這篇文章主要介紹了Android編程基于重力傳感器實現(xiàn)橫豎屏放向切換功能,結合具體實例形式分析了Android基于重力傳感器實現(xiàn)橫豎屏切換的相關操作技巧,需要的朋友可以參考下
    2018-01-01
  • 詳解Android StrictMode嚴格模式的使用方法

    詳解Android StrictMode嚴格模式的使用方法

    這篇文章主要介紹了Android StrictMode嚴格模式的使用方法,需要的朋友可以參考下
    2018-01-01
  • Android仿拉手網(wǎng)團購App我的收藏界面實例代碼

    Android仿拉手網(wǎng)團購App我的收藏界面實例代碼

    這篇文章主要介紹了Android仿拉手團購網(wǎng)App我的收藏界面實例代碼,需要的朋友可以參考下
    2017-05-05
  • Android實現(xiàn)ImageView圖片雙擊放大及縮小

    Android實現(xiàn)ImageView圖片雙擊放大及縮小

    這篇文章主要介紹了Android實現(xiàn)ImageView圖片雙擊放大及縮小的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-02-02

最新評論