最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

說(shuō)明

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

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

下面是效果

創(chuàng)建Unity項(xiàng)目

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

在空?qǐng)鼍爸袆?chuàng)建一個(gè)空節(jié)點(diǎn)名字為unityObject,注意:這個(gè)名字是等會(huì)再Android中向Unity發(fā)送消息時(shí)的API中必須要傳的參數(shù)

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

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");//調(diào)用Android中函數(shù)
    Debug.Log("點(diǎn)擊按鈕");
    System.Console.WriteLine("點(diǎn)擊按鈕");
  }
 
  void fromAndroid(string str)
  {
    Debug.Log("安卓傳來(lái)信息 : " + str);
    System.Console.WriteLine("安卓傳來(lái)信息 : " + str);
  }
}

然后在Build Settings中將平臺(tái)切換到Android

按照上圖的指示操作

然后在Player Settings中設(shè)置Other Settings中的PackageName這個(gè)必須要與Android中的包名一致,不一致可不可以?也行,反正我試著是可以的,我用的手機(jī)是小米9pro,其他機(jī)型沒(méi)試過(guò)

最后設(shè)置Minimum API Level 要與AndroidStudio中保持一致,這個(gè)如果不一致,在AndroidStudio中發(fā)布時(shí)鐵定會(huì)報(bào)錯(cuò)

簽名呢?需要設(shè)置么?我這里沒(méi)有設(shè)置,但是之前設(shè)置了也能正常運(yùn)行,這里跟簽名應(yīng)該沒(méi)有太大關(guān)系

我的都沒(méi)有設(shè)置,看下圖

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

再然后就是點(diǎn)擊Build Settings中的Export導(dǎo)出Android中需要的項(xiàng)目,導(dǎo)出的文件夾與Unity項(xiàng)目的關(guān)系,如果你是第一次看著我的博客教程跟著做,那么請(qǐng)按照我的文件夾的命名與結(jié)構(gòu)來(lái)做,因?yàn)樵贏ndroidStudio中需要根據(jù)路徑引入U(xiǎn)nity發(fā)布出來(lái)的安卓項(xiàng)目

Unity項(xiàng)目目錄與安卓項(xiàng)目目錄之間的關(guān)系

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

創(chuàng)建安卓項(xiàng)目

選擇NoActivity->Next

創(chuàng)建完成后,開(kāi)始導(dǎo)入U(xiǎn)nity Build出來(lái)的包

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

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

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

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

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

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

添加引入SO庫(kù)架構(gòu),如果不添加,構(gòu)建出來(lái)的app運(yùn)行時(shí)會(huì)閃退,并且報(bào)錯(cuò):can not find 'libmain.so'

還是在這個(gè)build.gradle中

ndk {
      // 設(shè)置支持的SO庫(kù)架構(gòu),第三方給的so庫(kù)哪幾種架構(gòu),就配置這幾種架構(gòu)
      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>

最后點(diǎn)擊AndroidStudio的SyncProject經(jīng)過(guò)編譯,左邊就會(huì)出現(xiàn)unity發(fā)布出來(lái)的項(xiàng)目的Moudles

至此安卓配置完成

編寫(xiě)安卓代碼

在包名上右鍵創(chuàng)建兩個(gè)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)建一個(gè)按鈕,按下按鈕跳轉(zhuǎn)到Unity中

雙擊.xml文件

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

對(duì)按鈕進(jìn)行設(shè)置

然后回調(diào)MainActivity中,就不會(huì)有報(bào)錯(cuò)了

創(chuàng)建UnityActivity類(lèi)

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()
  {
    //第一個(gè)參數(shù)是Unity中一個(gè)節(jié)點(diǎn)對(duì)象的名字,第二個(gè)參數(shù)是節(jié)點(diǎn)對(duì)象上掛的腳本中一個(gè)函數(shù)的名字,第三個(gè)參數(shù)是函數(shù)中的參數(shù)值
    UnityPlayer.UnitySendMessage("unityObject", "fromAndroid", "test");
  }
  // 接收unity信息
  public void ShowToast()
  {
    // unity點(diǎn)擊按鈕跳轉(zhuǎn)回安卓界面
    Intent intent = new Intent(this, MainActivity.class);
    this.startActivity(intent);
  }
}

如果UnityPlayerActivity變成紅色,說(shuō)明沒(méi)有引入,只需要將鼠標(biāo)光標(biāo)放到UnityPlayerActivity這句代碼上,然后按下鍵盤(pán)Alt+Enter鍵,就可以了自動(dòng)引入了

設(shè)置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,就是程序一開(kāi)始進(jìn)入的界面,也就是安卓界面,

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

修改unityLibrary下面的AndroidManifest.xml文件

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

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

點(diǎn)擊菜單欄中Build->RebuildProject構(gòu)建項(xiàng)目

將手機(jī)連接到電腦,并且調(diào)成USB調(diào)試模式中的傳輸文件模式

按下下圖按鈕,便會(huì)發(fā)布到手機(jī)中并自動(dòng)運(yùn)行

參考文章:

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

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

相關(guān)文章

最新評(píng)論

新绛县| 健康| 阿克| 中西区| 日照市| 仪陇县| 蒙自县| 正宁县| 迭部县| 巩义市| 屏东县| 太仆寺旗| 崇礼县| 陇南市| 宿州市| 永兴县| 黔江区| 和硕县| 栾城县| 荆州市| 青铜峡市| 长阳| 绍兴市| 丹寨县| 盘山县| 潍坊市| 丹巴县| 秦安县| 德安县| 宁乡县| 甘德县| 辽宁省| 汉寿县| 泸溪县| 普格县| 井研县| 荔浦县| 朔州市| 柘荣县| 沈阳市| 基隆市|