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

Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)

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

嵌入項(xiàng)目的AndroidStudio版本和Unity版本
Unity2019
AndroidStudio2021
Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
01 新建一個(gè)新的安卓項(xiàng)目
Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
項(xiàng)目里新建一個(gè)button
Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
實(shí)現(xiàn)button的點(diǎn)擊事件進(jìn)入游戲

Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)

package com.example.project_android;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button button1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button1 = findViewById(R.id.button1);
        //注冊(cè)監(jiān)聽器
        button1.setOnClickListener(this);
    }
    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button1:
                onClickButton1(view);
                break;
            default:
                break;
        }
    }
    private void onClickButton1(View view) {
        System.out.println("觸發(fā)點(diǎn)擊進(jìn)入游戲的按鈕事件");
    }
}

unity導(dǎo)出android工程

Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)

導(dǎo)出的工程文件夾放入原生的安卓項(xiàng)目

Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
放入如下代碼

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

Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
放入如下代碼

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

Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
放入如下代碼

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

Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)

android:process=":UnityActivity"

Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
項(xiàng)目里添加UnityGameActivity.java

Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)

package com.example.project_android;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
//進(jìn)入到這個(gè)類就進(jìn)入了unity游戲畫面
public class UnityGameActivity extends UnityPlayerActivity {
    private static final String TAG = "UnityGameActivity";
    private boolean isFinish = false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SendMessageToUnity("AndroidToUnityMessage");
    }
    public void finishUnityGame(String str) {
        Log.i(TAG, "unity傳給Android的信息: "+ str );
        isFinish = true;
        //關(guān)閉unity游戲返回app
        finish();
    }
    public void SendMessageToUnity(String str) {
        Log.i(TAG, "Android傳給unity的信息: " + str);
        //其中GameData是unity生成的gameobject,腳本要掛在上面。AndroidToUnity是unity里實(shí)現(xiàn)的方法。str是傳過去的值。
        UnityPlayer.UnitySendMessage("GameData", "AndroidToUnity", str);
    }
    @Override
    protected void onResume() {
        Log.e(TAG, "onResume: " );
        super.onResume();
    }
    @Override
    protected void onPause() {
        Log.e(TAG, "onPause: " );
        super.onPause();
        if (!isFinish){
            mUnityPlayer.pause();
        }
    }
    @Override
    protected void onStop() {
        Log.e(TAG, "onStop: " );
        super.onStop();
    }
    @Override
    protected void onDestroy() {
        Log.e(TAG, "onDestroy: " );
        super.onDestroy();
    }
}

需要配置,才能找到這個(gè)類

<activity android:name="com.example.project_android.UnityGameActivity" android:theme="@style/UnityThemeSelector" android:screenOrientation="landscape" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density" android:hardwareAccelerated="false">
    <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
    <meta-data android:name="android.notch_support" android:value="true" />
</activity>

Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
unity的腳本加上可以接收信息的方法,腳本需要掛在GameData上

Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)

    public void AndroidToUnity(string str)
    {
        Debug.Log("Unity接收Android信息 = " + str);
        //通過Newtonsoft.Json插件的JsonConvert.DeserializeObject方法,將json格式的string數(shù)據(jù)轉(zhuǎn)換為model數(shù)據(jù)
        //UnityDataModel unityDataModel = JsonConvert.DeserializeObject<UnityDataModel>(str);
        //Debug.Log("unityDataModel.key1 = " + unityDataModel.key1);
        //Debug.Log("unityDataModel.key2 = " + unityDataModel.key2);


    }

完整代碼

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;

public class GameData : MonoBehaviour
{
    public void IOSToUnity(string str)
    {
        Debug.Log("Unity接收IOS信息 = " + str);
        //通過Newtonsoft.Json插件的JsonConvert.DeserializeObject方法,將json格式的string數(shù)據(jù)轉(zhuǎn)換為model數(shù)據(jù)
        UnityDataModel unityDataModel = JsonConvert.DeserializeObject<UnityDataModel>(str);
        Debug.Log("unityDataModel.key1 = " + unityDataModel.key1);
        Debug.Log("unityDataModel.key2 = " + unityDataModel.key2);
    }

    public void AndroidToUnity(string str)
    {
        Debug.Log("Unity接收Android信息 = " + str);
        //通過Newtonsoft.Json插件的JsonConvert.DeserializeObject方法,將json格式的string數(shù)據(jù)轉(zhuǎn)換為model數(shù)據(jù)
        //UnityDataModel unityDataModel = JsonConvert.DeserializeObject<UnityDataModel>(str);
        //Debug.Log("unityDataModel.key1 = " + unityDataModel.key1);
        //Debug.Log("unityDataModel.key2 = " + unityDataModel.key2);
    }

    private void Awake()
    {
        DontDestroyOnLoad(this);
    }
}

安卓端在button的點(diǎn)擊事件里,加上啟動(dòng)unity游戲的方法

private void onClickButton1(View view) {
    System.out.println("觸發(fā)點(diǎn)擊進(jìn)入游戲的按鈕事件");
    startActivity(new Intent(view.getContext(), UnityGameActivity.class));
}

解決安裝以上雙圖標(biāo)問題

Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
unity導(dǎo)出的android sdk 和 android studio導(dǎo)出的android sdk版本要一致

解決:E/Unity: Failed to load 'libmain.so’問題,需要在unity做如下配置:E/Unity: Failed to load 'libmain.so’問題,需要在unity做如下配置

Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
游戲啟動(dòng)閃退問題解決
Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)

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

Unity端結(jié)束游戲時(shí)發(fā)信息給安卓端

核心代碼

#if UNITY_ANDROID
            try
            {
                AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
                AndroidJavaObject overrideActivity = jc.GetStatic<AndroidJavaObject>("currentActivity");
                //AndroidToUnityMessage是發(fā)送給Android的信息,finishUnityGame是安卓端接收的方法
                overrideActivity.Call("finishUnityGame", "AndroidToUnityMessage");
            }
            catch (Exception e)
            {
                Debug.Log(e.Message);
            }
#endif

安卓可以橫屏且可以旋轉(zhuǎn)的設(shè)置

unity里的設(shè)置

Unity游戲嵌入Android應(yīng)用(融合為一個(gè)應(yīng)用)
AndroidStudio里的設(shè)置文章來源地址http://www.zghlxwxcb.cn/news/detail-400999.html

<activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector" android:screenOrientation="sensorLandscape" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density" android:hardwareAccelerated="false">

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

本文來自互聯(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)文章

  • Unity開發(fā)一個(gè)FPS游戲之二

    Unity開發(fā)一個(gè)FPS游戲之二

    在之前的文章中,我介紹了如何開發(fā)一個(gè)FPS游戲,添加一個(gè)第一人稱的主角,并設(shè)置武器?,F(xiàn)在我將繼續(xù)完善這個(gè)游戲,打算添加敵人,實(shí)現(xiàn)其智能尋找玩家并進(jìn)行對(duì)抗。完成的效果如下: fps_enemy_demo ? 首先是設(shè)計(jì)敵人,我們可以在網(wǎng)上找到一些好的免費(fèi)素材,例如在Unity商

    2024年03月17日
    瀏覽(37)
  • Unity之創(chuàng)建第一個(gè)2D游戲項(xiàng)目

    Unity之創(chuàng)建第一個(gè)2D游戲項(xiàng)目

    一 Unity環(huán)境配置 1.1 Untity資源官網(wǎng)下載:https://unity.cn/releases 1.2 Unity Hub集成環(huán)境,包含工具和項(xiàng)目的管理 1.3 Unity Editor編輯器 1.4?Visual Studio 2022腳本編輯器 1.5 AndroidSKD,JDK,NDK工具,用于android環(huán)境的運(yùn)行 二 創(chuàng)建Unity項(xiàng)目 2.1 新建2D模板項(xiàng)目 2.2 新建2D物體 2.3 新建C#腳本文件?

    2024年02月04日
    瀏覽(21)
  • 用unity寫一個(gè)2D類的拼圖游戲

    用unity寫一個(gè)2D類的拼圖游戲

    前幾天接了一個(gè)拼圖項(xiàng)目剛好現(xiàn)在寫完了,拿出來分享,拼圖不難,我也是看了一個(gè)官方案例寫的,因?yàn)楫?dāng)我們寫圖片跟隨鼠標(biāo)的時(shí)候,鼠標(biāo)已經(jīng)有一個(gè)圖片了,這個(gè)圖片會(huì)遮擋射線,然后就無法判斷當(dāng)前拼圖塊在哪里,話不多說,上菜 1、新建總控腳本LevelManager 2、新建Pu

    2024年02月08日
    瀏覽(28)
  • Unity 實(shí)現(xiàn)一個(gè)FPS游戲的全過程

    Unity是一款功能強(qiáng)大的游戲引擎,它提供了各種各樣的工具和功能,以幫助開發(fā)者輕松地創(chuàng)建精美的3D游戲和應(yīng)用程序。在本文中,我們將使用Unity實(shí)現(xiàn)一個(gè)FPS游戲的全過程,從場(chǎng)景設(shè)計(jì)、角色控制、敵人AI到最終的打包發(fā)布。 對(duì)啦!這里有個(gè)游戲開發(fā)交流小組里面聚集了一幫

    2024年02月05日
    瀏覽(25)
  • 【Unity之豎屏游戲制作】如何做一個(gè)豎屏的手機(jī)游戲

    【Unity之豎屏游戲制作】如何做一個(gè)豎屏的手機(jī)游戲

    ?????個(gè)人主頁 :@元宇宙-秩沅 ????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 :Unity基礎(chǔ)實(shí)戰(zhàn) 普通矩形地圖生成 菱形矩形地圖生成 單排生成 雙排鋪滿 ? ? 添加緩存池的本質(zhì)其實(shí)就是資源的循環(huán)利用,減少多次CG。

    2024年03月19日
    瀏覽(23)
  • 【Unity】教你如何使用Unity制作一個(gè)簡(jiǎn)單的跑酷游戲

    【Unity】教你如何使用Unity制作一個(gè)簡(jiǎn)單的跑酷游戲

    其實(shí)用Unity制作游戲并不難,如果你想學(xué)習(xí),那我就建議你想從制作一個(gè)簡(jiǎn)單的跑酷游戲來找到興趣,因?yàn)槿绻阋婚_始就一直學(xué)習(xí)一些沒什么必要的語法,這樣就會(huì)讓你一開始就失去了信心,失去了學(xué)習(xí)Unity的動(dòng)力,所以如果你先學(xué)習(xí)如何制作一個(gè)簡(jiǎn)單的跑酷地圖,然后你就

    2024年02月21日
    瀏覽(19)
  • 初識(shí)Unity(十步做好你的第一個(gè)unity小游戲)

    初識(shí)Unity(十步做好你的第一個(gè)unity小游戲)

    一、unity的整體認(rèn)識(shí) 1、創(chuàng)建項(xiàng)目工程文件以及unity布局介紹 (1)打開unityhub,新建項(xiàng)目工程(Project)選擇保存路徑。 (2)unity的多種布局(窗口的排列)。 認(rèn)識(shí)了tall布局下各個(gè)view的功能,四個(gè)開發(fā)視圖(Scene,Project,Hierarchy,Inspector)以及一個(gè)game視圖。 Scene(場(chǎng)景)視圖

    2024年01月24日
    瀏覽(24)
  • 【Unity】Unity開發(fā)學(xué)習(xí)和項(xiàng)目實(shí)踐02——?jiǎng)?chuàng)建第一個(gè)Unity項(xiàng)目和游戲物體

    【Unity】Unity開發(fā)學(xué)習(xí)和項(xiàng)目實(shí)踐02——?jiǎng)?chuàng)建第一個(gè)Unity項(xiàng)目和游戲物體

    創(chuàng)建第1個(gè)Unity項(xiàng)目 打開Unity hub,點(diǎn)擊新項(xiàng)目 以下有四處地方需要注意選擇: 1.Unity編輯器版本 2.項(xiàng)目模板 3.項(xiàng)目名稱 4.項(xiàng)目保存位置 點(diǎn)擊創(chuàng)建項(xiàng)目 ok,進(jìn)入編輯器了 把編輯器界面布局稍微改一下,改成2by3 點(diǎn)擊Edit 點(diǎn)擊 project settings,這是對(duì)我們所創(chuàng)建工程的設(shè)置 此外還有對(duì)

    2024年01月25日
    瀏覽(95)
  • Unity 3D游戲開發(fā)+腳本編程完整指南:制作第一個(gè)游戲:3D滾球跑酷

    Unity 3D游戲開發(fā)+腳本編程完整指南:制作第一個(gè)游戲:3D滾球跑酷

    教程相關(guān)資源 Unity 3D游戲開發(fā)+腳本編程完整指南(工程文件+PPT).zip 本節(jié)利用前面的知識(shí)來實(shí)現(xiàn)第一個(gè)較為完整的小游戲,如 圖 1-21 所示。 圖1-21 3D滾球跑酷游戲完成效果 1. 功能點(diǎn)分析 游戲中的小球會(huì)以恒定速度向前移動(dòng),而玩家控制著小球 左右移動(dòng)來躲避跑道中的黃色障

    2024年02月21日
    瀏覽(31)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包