国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android內(nèi)嵌Unity (Activity)

這篇具有很好參考價(jià)值的文章主要介紹了Android內(nèi)嵌Unity (Activity)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Unity2019.4.4

AndropidStudio4.2.1

參考文檔:

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

Android Fragment中加載,嵌套Unity視圖_unity 導(dǎo)入并作為fragment_周灬浩的博客-CSDN博客

本文只實(shí)現(xiàn)了Activity整個(gè)切換過(guò)去,而Fragment,這種像h5似的與app共存,目前還未實(shí)現(xiàn),可參考的第二個(gè)鏈接

1、在空?qǐng)鼍爸袆?chuàng)建一個(gè)空節(jié)點(diǎn)名字為unityObject(這個(gè)名字安卓調(diào)用unity用到)

然后在節(jié)點(diǎn)上添加一個(gè)腳本

using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
/// <summary>
/// 安卓 unity交互
/// </summary>
public class AndoridAndUnity : MonoBehaviour
{
    public static AndoridAndUnity instance;
    AndroidJavaObject jo;
    private void Awake()
    {
        Debug.Log("AndoridAndUnity Awake");
        instance = this;
        //RunGameScene("Test");
        DontDestroyOnLoad(this);
    }

    private void Start()
    {
        Debug.Log("AndoridAndUnity Start");
        //Debug.Log("AndoridAndUnity 包名:"+ Application.identifier);
        //Debug.Log("AndoridAndUnity 版本號(hào):" + Application.version);

    }

    //安卓回掉unity
    void fromAndroid(string str)
    {
        Debug.Log("安卓傳來(lái)信息 : " + str);
    }

    //安卓回掉unity
    void RunGameScene(string str)
    {
        Debug.Log("切換場(chǎng)景 : " + str);
        SceneManager.LoadScene(str);
    }

    //返回app
    public void GoBack()
    {
        PlayerPrefs.Save();

        Debug.Log("AndoridAndUnity GoBack");
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        jo.Call("goBack");//調(diào)用Android中函數(shù)

        //Application.Quit();
    }    

    string str;
    private void OnGUI()
    {
        GUI.color = Color.white;
        //GUI.Label(new Rect(10, 100, 200, 40), str);
        if (GUI.Button(new Rect(10, 20, 200, 80), "返回"))
        {
            //str = "點(diǎn)擊成功";
            GoBack();
        }

    }    


}

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

fragment 嵌套u(yù)nity,unity Android,unity3d,android,unity

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

fragment 嵌套u(yù)nity,unity Android,unity3d,android,unity

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

fragment 嵌套u(yù)nity,unity Android,unity3d,android,unity??

選擇NoActivity->Next

fragment 嵌套u(yù)nity,unity Android,unity3d,android,unity

?盡量保持一致,不一致也是以安卓的為準(zhǔn)

fragment 嵌套u(yù)nity,unity Android,unity3d,android,unity

?NativeAndroidApp 中settings.gradle文件添加代碼,將導(dǎo)出的unity庫(kù)導(dǎo)入到安卓項(xiàng)目中(unityLibrary 的路徑就是導(dǎo)出放置的路徑有關(guān))

fragment 嵌套u(yù)nity,unity Android,unity3d,android,unity

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

?在應(yīng)用級(jí)build.gradle中加入so庫(kù)和dependencies相應(yīng)的unity依賴fragment 嵌套u(yù)nity,unity Android,unity3d,android,unity?在應(yīng)用級(jí)build.gradle中加入so庫(kù)和dependencies相應(yīng)的unity依賴

android {
    defaultConfig {
        ***
        ndk {
            // 設(shè)置支持的SO庫(kù)架構(gòu),第三方給的so庫(kù)哪幾種架構(gòu),就配置這幾種架構(gòu)
            abiFilters 'armeabi', 'armeabi', 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
        }
    }
}

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

***
}

在根級(jí)build.gradle(Module:NativeAndroidApp)中 加入

allprojects {
    repositories {
        google()
        jcenter()

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

引用完成就能在項(xiàng)目中看到unityLibrary,并修改unityLibrary下面的AndroidManifest.xml文中

fragment 嵌套u(yù)nity,unity Android,unity3d,android,unity

?fragment 嵌套u(yù)nity,unity Android,unity3d,android,unity

3、構(gòu)建安卓布局和加入調(diào)用代碼

選擇 NativeAndroidApp 的?strings.xml?添加

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

構(gòu)建一個(gè)ui布局,并加入button按鈕

fragment 嵌套u(yù)nity,unity Android,unity3d,android,unity

?fragment 嵌套u(yù)nity,unity Android,unity3d,android,unity

fragment 嵌套u(yù)nity,unity Android,unity3d,android,unity

MainActivity.java

package com.fancy.rush;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
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) {
                Log.d("/Unity", "UnityActivity");

                Intent intent = new Intent(MainActivity.this, UnityActivity.class);
                intent.putExtra("sceneLevel","MatchAndMerge");//傳遞參數(shù),利用傳遞的參數(shù)可以切換場(chǎng)景,或者數(shù)據(jù)之類的
                startActivity(intent);
            }
        });
    }
}

?UnityActivity.java

import android.os.Bundle;
import android.util.Log;

import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
import com.unity3d.player.UnityPlayer;


public class UnityActivity extends UnityPlayerActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent=getIntent();
        String sceneLevel=intent.getStringExtra("sceneLevel");
        testSendMessage(sceneLevel);
    }

    //當(dāng)unity場(chǎng)景設(shè)置為常駐activity時(shí),就需要運(yùn)用到,常駐場(chǎng)景goBack切換出去后,再次打開時(shí)不會(huì)再周OnCreate,而是走onNewIntent
    @Override protected void onNewIntent(Intent intent)
    {
        super.onNewIntent(intent);

        String sceneLevel=intent.getStringExtra("sceneLevel");
        testSendMessage(sceneLevel);
    }

    // 向unity發(fā)送信息
    public void testSendMessage(String sceneLevel)
    {
        //獲取意圖對(duì)象
        Log.d("/Unity", "testSendMessage sceneLevel:"+sceneLevel);

        UnityPlayer.UnitySendMessage("unityObject", "fromAndroid", "UnityActivity");

        //利用傳遞的參數(shù)切換場(chǎng)景
        //第一個(gè)參數(shù)是Unity中一個(gè)節(jié)點(diǎn)對(duì)象的名字,第二個(gè)參數(shù)是節(jié)點(diǎn)對(duì)象上掛的腳本中一個(gè)函數(shù)的名字,第三個(gè)參數(shù)是函數(shù)中的參數(shù)值
        //UnityPlayer.UnitySendMessage("unityObject", "RunGameScene", sceneLevel);
    }

    public void goBack()
    {
        // unity點(diǎn)擊按鈕跳轉(zhuǎn)回安卓界面
        Intent intent = new Intent(this, MainActivity.class);
        this.startActivity(intent);
    }
}

?再unity和app間相互切換會(huì)出現(xiàn)奔潰現(xiàn)象,只要把UnityActivity設(shè)置為 singleTask,常駐就不會(huì)被清除掉,再次調(diào)用打開unity就不會(huì)奔潰

fragment 嵌套u(yù)nity,unity Android,unity3d,android,unity文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-801984.html

到了這里,關(guān)于Android內(nèi)嵌Unity (Activity)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android adb命令獲取當(dāng)前Activity或者Fragment

    Android adb命令獲取當(dāng)前Activity或者Fragment

    用adb命令查看下面Demo處于 NO.3 Fragment 時(shí)的 Activity 和 Fragment 信息。 輸出結(jié)果如下: 上面的 com.example.who/com.example.who.ui.activity.SecondActivity} 可以分成兩部分看: / 前的部分是包名, / 后的部分是當(dāng)前 Activity 的類全名。 該命令會(huì)輸出堆棧中全部的窗口信息。 輸出結(jié)果如下, Se

    2024年02月15日
    瀏覽(27)
  • Flutter 和 Android原生(Activity、Fragment)相互跳轉(zhuǎn)、傳參

    Flutter 和 Android原生(Activity、Fragment)相互跳轉(zhuǎn)、傳參

    本文主要講解 Flutter 和 Android原生之間,頁(yè)面相互跳轉(zhuǎn)、傳參, 但其中用到了 兩端相互通信 的知識(shí), 非常建議 先看完這篇 講解通信的文章 : Flutter 與 Android原生 相互通信:BasicMessageChannel、MethodChannel、EventChannel_flutter eventchannel methodchannel basemessagechan-CSDN博客 當(dāng)前案例 Flu

    2024年02月22日
    瀏覽(29)
  • 【Android】怎么使用一個(gè)ViewModel用在多個(gè)Activity或者Fragment中

    項(xiàng)目需求 在多個(gè)Activity或者Fragment中使用同一個(gè)ViewModel 需求實(shí)現(xiàn) 1.使用ActivityScope或FragmentScope 想在一個(gè)Activity或Fragment中共享ViewModel實(shí)例,可以使用ActivityScope或FragmentScope。這兩種范圍會(huì)根據(jù)它們所綁定的Activity或Fragment自動(dòng)管理ViewModel實(shí)例的生命周期。 例如,創(chuàng)建一個(gè)繼承自

    2024年02月15日
    瀏覽(18)
  • 【Unity3D】Unity與Android交互

    【Unity3D】Unity與Android交互

    ? ? ? ? 本文主要介紹 Unity 打包發(fā)布 Android apk 流程、基于?AndroidJavaObject(或?AndroidJavaClass)實(shí)現(xiàn) Unity 調(diào)用 Java 代碼、基于 UnityPlayer 實(shí)現(xiàn) Java 調(diào)用 Unity 代碼,官方介紹見→Android。 ? ? ? ? Unity 項(xiàng)目 C#?中獲取平臺(tái)的代碼如下,需要引入 UnityEngine 命名空間。 ????????Ru

    2024年02月07日
    瀏覽(17)
  • 【Unity3D】Android 打包 ④ ( Android 工程打包 | Unity 中導(dǎo)出安卓工程 | Android Studio 打開 Unity 導(dǎo)出的 Android 工程 )

    【Unity3D】Android 打包 ④ ( Android 工程打包 | Unity 中導(dǎo)出安卓工程 | Android Studio 打開 Unity 導(dǎo)出的 Android 工程 )

    Android 工程打包 就是將 Unity 項(xiàng)目導(dǎo)出為 Android Studio 項(xiàng)目 , 在 Unity 編輯器中選擇 \\\" 菜單欄 | File | Build Settings… \\\" 選項(xiàng) , 在彈出的 \\\" Build Settings \\\" 對(duì)話框中 , 勾選上 \\\" Export Project \\\" 選框 , 然后點(diǎn)擊右下角的 \\\" Export \\\" 導(dǎo)出按鈕 ; 選擇一個(gè)導(dǎo)出目錄 ; 等待 Android 工程導(dǎo)出 ; 最終導(dǎo)出的

    2023年04月19日
    瀏覽(93)
  • Unity3d發(fā)布android項(xiàng)目,打包apk包流程(unity2021.3.10)

    Unity3d發(fā)布android項(xiàng)目,打包apk包流程(unity2021.3.10)

    1、如下圖,在安裝版本設(shè)置里,點(diǎn)擊添加模塊。如果沒有添加模塊,證明你安裝路徑不是目前版本的安裝路徑,先去設(shè)置回來(lái)。 2、框選Android Build Support,點(diǎn)擊繼續(xù),如下圖, 3、同意,安裝,如下圖, 4、等待安裝完成即可,如下圖。 1、點(diǎn)擊菜單欄File→Build Settings,進(jìn)行編輯

    2023年04月23日
    瀏覽(92)
  • 在Android中Unity3D透明背景的實(shí)現(xiàn)

    在Android中Unity3D透明背景的實(shí)現(xiàn)

    在Unity中,可以通過(guò)Window-Rendering-lighting-在屬性面板中選擇Environment,修改 Skybox Material 為 None 來(lái)去掉天空盒。 但去掉天空盒的效果是這樣的: 這樣的效果明顯不是預(yù)期的效果。 去掉天空盒并不代表背景被透明,還需要設(shè)置Camera的背景。 需要設(shè)置黑色透明度0,即ARGB為(0,

    2023年04月08日
    瀏覽(24)
  • Unity3D PC、Android、iOS平臺(tái)打包流程

    Unity3D PC、Android、iOS平臺(tái)打包流程

    在Unity窗口中,按下Ctrl+Shift+B快捷鍵,或者在菜單欄選擇File-BuildSettings...,打開設(shè)置窗口。“Platform”下的選擇項(xiàng)默認(rèn)選擇“Windows,Mac,Linux”。單擊左下方的“Player Settings...”繼續(xù)后續(xù)設(shè)置(應(yīng)用名、應(yīng)用分辨率、圖標(biāo)等),如圖1-1所示。 圖1-1 PC平臺(tái)選擇 接著,點(diǎn)擊Add Op

    2023年04月20日
    瀏覽(35)
  • Unity3D2020+導(dǎo)出Android工程中使用并交互

    Unity3D2020+導(dǎo)出Android工程中使用并交互

    , 目錄 1,版本信息 2,前期準(zhǔn)備 Unity方面: Android方面: 3,Android與Unity3D交互 unity2020+ android studio 2021 *不要用android studio 2020系列,存在不能導(dǎo)入Library的bug 1,先配置打包的一些必要要素,包括包名之類 2,修改打包選項(xiàng),將其打包為Android工程? 3,打包出來(lái)的工程如下,其中

    2023年04月08日
    瀏覽(98)
  • Unity3d使用Netcode實(shí)現(xiàn)Hololens、Android和Pc端通信

    Unity3d使用Netcode實(shí)現(xiàn)Hololens、Android和Pc端通信

    在Unity3d中使用現(xiàn)有的Netcode/Mirror組件實(shí)現(xiàn)Hololens、Android和Pc端的三方通信,可以指定一平臺(tái)為服務(wù)器端,其他的兩平臺(tái)多為客戶端,不過(guò)通常是進(jìn)行兩個(gè)平臺(tái)的通信即可。在這片文章中,可以實(shí)現(xiàn)平移、縮放以及旋轉(zhuǎn)的同步 具體步驟如下: 版本:unity2020.3LTS、VS2019 一、配置

    2024年02月09日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包