【Unity】Unity與安卓交互

問題描述

Unity和安卓手機進行交互,是我們開發游戲中最常見的場景。本教程將從一個簡單的例子來演示一下。
本教程需要用到Android Studio2021.1.1

1.Android Studio新建一個工程

在這里插入圖片描述

2.選擇Empty Activity 然后點擊Next

在這里插入圖片描述

3.點擊Finish完成創建在這里插入圖片描述

4.選擇File-New-New Module

在這里插入圖片描述

5.創建一個Android Library

這個就是用來生成一個jar包的

在這里插入圖片描述

5.創建成功后,會看到剛剛創建的mylibrary和下面的build.gradle

不同視窗排版不一樣,自己調整一下
在這里插入圖片描述

6.找到Unity的classes.jar,在安裝目錄下

比如我的目錄:C:\Program Files\Unity\Hub\Editor\2021.3.33f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Release\Classes
注意選擇自己需要的版本
在這里插入圖片描述

7.拷貝到Android Studio項目中的Libs下

請添加圖片描述

8.右鍵選擇Add As Library

請添加圖片描述

9.在src的main目錄下,右鍵新增一個JavaGame腳本

在這里插入圖片描述

10.加入以下測試腳本

package com.hao.mylibrary;
import android.util.Log;
import com.unity3d.player.UnityPlayer;public class JavaGame
{//初始化public static void Init(){// 打印: JavaGame: InitLog.d("JavaGame", "Init");}//獲取渠道private String GetChannel(){Log.d("JavaGame", "GetChannel");return "xiaomi";}//加法public int Add(int num1,int num2){Log.d("JavaGame", "Add");return num1 + num2;}//登錄public static void Login(){// 打印: JavaGame: LoginLog.d("JavaGame", "Login");UnityPlayer.UnitySendMessage("UnityObj", "LoginSucceed", "abc12345");}
}

11.打開build.gradle,添加以下打包代碼

task makeJar(type: Copy) {//刪除存在的delete 'build/libs/testlibrary.jar'//設置拷貝的文件from('build/intermediates/aar_main_jar/release/')//打進jar包后的文件目錄into('build/libs/')//將classes.jar放入build/libs/目錄下//include ,exclude參數來設置過濾include('classes.jar')//重命名rename ('classes.jar', 'testlibrary.jar')}makeJar.dependsOn(build)

在這里插入圖片描述

12.在右側找到Gradle,選擇項目中的Tasks - other - makeJar,雙擊makeJar開始打包

在這里插入圖片描述

13.提示打包成功后,可在Build中的Libs下找到jar包

在這里插入圖片描述

14.拷貝到Unity工程Plugins/Android目錄下

在這里插入圖片描述

15.在Unity里新建一個Game.cs腳本,加入以下測試代碼

using UnityEngine;
using UnityEngine.UI;
public class Game : MonoBehaviour
{public Text ChannelText;public Text AddText;void Start(){AndroidJavaObject javaObject = new AndroidJavaObject("com.hao.mylibrary.JavaGame");// 靜態方法javaObject.CallStatic("Init");// 非靜態無參方法,返回一個渠道名string Channel = javaObject.Call<string>("GetChannel");ChannelText.text = Channel;// 非靜態,帶參數方法int num = javaObject.Call<int>("Add", 2,6);AddText.text = num.ToString();//調用登錄,登錄成功會返回javaObject.CallStatic("Login");}
}

16.在Unity里新建一個UnityObj.cs腳本,并且掛在 UnityObj對象上 。

UnityObj必須要和java里的名稱一致,不然Unity就接收不到java的返回

using UnityEngine;
using UnityEngine.UI;
public class UnityObj : MonoBehaviour
{public Text mText;private void LoginSucceed(string value){mText.text = value;}
}

在這里插入圖片描述

17.為了方便測試,建了一個簡單UI,把返回結果直接顯示在UI上。

在這里插入圖片描述

18.打包測試,使用雷電模擬器測試

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697011.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697011.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697011.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【python 3.9.18】windowns安裝版

因為這個版本官方未提供&#xff0c;所以需要自己編譯出來&#xff0c;其他沒有的版本可以依據下面的進行生成一個exe也可行。 成品&#xff1a; https://gitee.com/greatLong/python-3.9.18/tree/master/python-3.9.18/PCbuild/amd64 1、環境準備 需要使用到 這里面還需要選…

【MATLAB GUI】 5. 圖像處理菜單(菜單編輯器)

看B站up主freexyn的freexyn編程實例視頻教程系列36Matlab GUI的學習筆記 任務要求設計一個圖像處理菜單&#xff0c;實現圖像的打開導入、灰度處理、存儲等功能 修改過文件名&#xff0c;所以運行的時候會有一點點報錯&#xff0c;但是不影響運行 打開工具欄下邊的菜單編輯器…

開窗Window和WindowAll的區別

在 Apache Flink 流處理框架中&#xff0c;窗口操作是處理流數據的重要部分。Flink 提供了時間窗口、計數窗口等多種窗口類型&#xff0c;用于將數據分割成不同的窗口進行聚合或其他處理。 Window 和 WindowAll 是 Flink 中窗口操作的兩種不同方式&#xff0c;它們分別對應不同…

GIT倉庫轉移--攜帶原分支及提交記錄

背景&#xff1a;最近公司倉庫位置需要移動&#xff0c;想保留原有的倉庫分支和提交記錄 操作&#xff1a; 目的位置新建倉庫&#xff08;要保證創建無誤&#xff09;原倉庫 git clone 到本地&#xff0c;git pull 保證代碼最新找到原倉庫.git/config 文件&#xff0c;修改 rem…

EPSON機器人與PC上位機軟件C#網絡TCP通訊

項目背景&#xff1a; 在非標設備PIN焊接機中用到了愛普生機器人。上位機軟件使用c#wpf開發。主要邏輯在上位機中。用愛普生機器人給焊接平臺實現自動上下料。 通訊方式&#xff1a;網絡TCP通訊&#xff0c;Socket 角色&#xff1a;上位機為服務端&#xff0c;機器人為客戶端…

Linux|centos7|錄屏神器asciinema的編譯安裝和離線化安裝使用

前言&#xff1a; asciinema這個錄屏軟件前面有一點研究&#xff0c;但它的部署安裝比較麻煩&#xff0c;雖然此軟件的安裝部署方式是很多的&#xff0c;比如yum安&#xff0c;apt&#xff0c;brew&#xff0c;docker&#xff0c;pip&#xff0c;rust編譯&#xff0c;docker等…

創建一個基于Node.js的實時聊天應用

在當今數字化社會&#xff0c;實時通訊已成為人們生活中不可或缺的一部分。無論是在社交媒體平臺上與朋友交流&#xff0c;還是在工作場合中與同事協作&#xff0c;實時聊天應用都扮演著重要角色。與此同時&#xff0c;Node.js作為一種流行的后端技術&#xff0c;為開發者提供了…

CrossOver虛擬機軟件2024有哪些功能?最新版本支持哪些游戲?

CrossOver由codewaver公司開發的類虛擬機軟件&#xff0c;目的是使linux和Mac OS X操作系統和window系統兼容。CrossOver不像Parallels或VMware的模擬器&#xff0c;而是實實在在Mac OS X系統上運行的一個軟件。CrossOvers能夠直接在Mac上運行Windows軟件與游戲&#xff0c;而不…

Java架構師之路七、大數據:Hadoop、Spark、Hive、HBase、Kafka等

目錄 Hadoop&#xff1a; Spark&#xff1a; Hive&#xff1a; HBase&#xff1a; Kafka&#xff1a; Java架構師之路六、高并發與性能優化&#xff1a;高并發編程、性能調優、線程池、NIO、Netty、高性能數據庫等。-CSDN博客Java架構師之路八、安全技術&#xff1a;Web安…

[前端]開啟VUE之路-NODE.js版本管理

VUE前端開發框架&#xff0c;以Node.js為底座。用歷史性的項目來學習&#xff0c;為了降低開發環境的影響因素&#xff0c;各種版本號最好能一致。前端項目也是一樣。為了項目能夠快速啟動&#xff0c;Node.js的版本管理&#xff0c;可以帶來很大的便利&#xff08;node.js快速…

2023年全年回顧

本年度比較折騰&#xff0c;整體而言可以分為兩個大的階段&#xff0c;簡單而言&#xff0c;轉崗前和轉崗后。 個人收獲 據說程序員有幾大浪漫&#xff0c;比如操作系統、編譯器、瀏覽器、游戲引擎等。 之前參與過游戲引擎&#xff0c;現在有機會參與存儲業務交付&#xff0c…

LangChain支持嗶哩嗶哩視頻總結

是基于LangChain框架下的開發&#xff0c;所以最開始請先 pip install Langchain pip install bilibili-api-python 技術要點&#xff1a; 使用Langchain框架自帶的Document loaders 修改BiliBiliLoader的源碼&#xff0c;自帶的并不支持當前b站的視頻加載 源碼文件修改&a…

如何在 Emacs Prelude 上使用 graphviz 的 dot 繪制流程圖

文章目錄 如何在Emacs Prelude上使用graphviz的dot繪制流程圖 <2022-08-23 周二> 如何在Emacs Prelude上使用graphviz的dot繪制流程圖 標題中的Emacs Prelude是指&#xff1a;bbatsov/prelude&#xff0c;在custom.el中添加即可&#xff1a; ;;; graphviz (prelude-re…

【高德地圖】Android高德地圖繪制標記點Marker

&#x1f4d6;第4章 Android高德地圖繪制標記點Marker ?繪制默認 Marker?繪制多個Marker?繪制自定義 Marker?Marker點擊事件?Marker動畫效果?Marker拖拽事件?繪制默認 Infowindow&#x1f6a9;隱藏InfoWindow 彈框 ?繪制自定義 InfoWindow&#x1f6a9;實現 InfoWindow…

Java 中 CopyOnWriteArrayList和CopyOnWriteArraySet

什么是CopyOnWriteArrayList和CopyOnWriteArraySet CopyOnWriteArrayList和CopyOnWriteArraySet都是Java并發編程中提供的線程安全的集合類。 CopyOnWriteArrayList是一個線程安全的ArrayList&#xff0c;其內部通過volatile數組和顯式鎖ReentrantLock來實現線程安全。它采用…

解決ios17無法復制的問題

原代碼寫過一片js實現復制的代碼 那段代碼有問題 以下是之前寫的一段有問題的原代碼&#xff1a; let url "kkkkkk";const hiddenTextarea document.createElement("textarea");hiddenTextarea.style.position "absolute";hiddenTextarea.st…

ArcgisForJS如何實現添加含圖片樣式的點要素?

文章目錄 0.引言1.加載底圖2.獲取點要素的坐標3.添加含圖片樣式的幾何要素4.完整實現 0.引言 ArcGIS API for JavaScript 是一個用于在Web和移動應用程序中創建交互式地圖和地理空間分析應用的庫。本文在ArcGIS For JavaScript中使用Graphic對象來創建包含圖片樣式的點要素。 …

MIT-6.824-Lab2,Raft部分筆記|Use Go

文章目錄 前記Paper6&#xff1a;RaftLEC5、6&#xff1a;RaftLAB22AtaskHintlockingstructureguide設計與編碼 2BtaskHint設計與編碼 2CtaskHint question后記 LEC5&#xff1a;GO, Threads, and Raftgo threads技巧raft實驗易錯點debug技巧 前記 趁著研一考完期末有點點空余…

軟考29-上午題-【數據結構】-排序

一、排序的基本概念 1-1、穩定性 穩定性指的是相同的數據所在的位置經過排序后是否發生變化。若是排序后&#xff0c;次序不變&#xff0c;則是穩定的。 1-2、歸位 每一趟排序能確定一個元素的最終位置。 1-3、內部排序 排序記錄全部存放在內存中進行排序的過程。 1-4、外部…

vue使用.sync和update實現父組件與子組件數據綁定的案例

在 Vue 中&#xff0c;.sync 是一個用于實現雙向數據綁定的特殊修飾符。它允許父組件通過一種簡潔的方式向子組件傳遞一個 prop&#xff0c;并在子組件中修改這個 prop 的值&#xff0c;然后將修改后的值反饋回父組件&#xff0c;實現雙向數據綁定。 使用 .sync 修飾符的基本語…