[Unity学习教程] Unity与安卓交互

[复制链接]
查看994 | 回复2 | 2023-8-23 11:54:56 | 显示全部楼层 |阅读模式 来自 中国北京
Unity与安卓交互

弁言

在Unity的项目开辟过程中,总会碰到Unity提供的方法不敷以支持安卓平台的开辟,这时间我们就必要引用安卓平台本身的一些方法或者SDK来帮助我们继承开辟,那么Unity和安卓原生时怎么举行交互的呢,在这里我们做一下简朴的极少。
工具



  • Unity:2019.4.31f1c1
  • Android Studio:2020.3.1
天生jar包

此过程重要在Android Studio中完成。
创建工程

1、创建一个Empty Activity,点击Next

2、根据本身必要设置对应的项目名称和最小SDK版本,项目名称不必要和Unity包名一样,最小SDK版本必要和Unity中设置的一样。

unity中设置最小SDK

工程设置

1、删除两个无用的工程

2、修改build.gradle


  • plugins下的id改为com.android.library
  • 删除defaultConfig下的applicationId

3、点击sync now

4、参加Unity classes.jar
jar泉源:unity工具安装目次下的\Editor\Data\PlaybackEngines\AndroidPlayer\Variations,此文件夹中有il2cpp和mono两个文件夹,根据unity的编译选择对应的文件夹下的\Release\Classes\下的classes.jar
  1. 例如:C:\Program Files\Unity\Hub\Editor\2019.4.31f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes
复制代码
unity编译方式

将jar包复制到android studio工程的libs文件夹下,而且添加为库(Add As Library)。

5、这个版本的classes.jar中不包罗UnityPlayerActivity.java类,必要本技艺动添加。
  1. C:\Program Files\Unity\Hub\Editor\2019.4.31f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Source
复制代码
找到对应路径下的com文件夹,复制到java文件夹下。

6、修改MainActivity类,使其继承UnityPlayerActivity。

  1. package com.aitu.unityandroidutils;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import com.unity3d.player.UnityPlayerActivity;
  4. import android.os.Bundle;
  5. public class MainActivity extends UnityPlayerActivity {
  6.     @Override
  7.     protected void onCreate(Bundle savedInstanceState) {
  8.         super.onCreate(savedInstanceState);
  9.         //setContentView(R.layout.activity_main);
  10.     }
  11.     /**
  12.      * 测试
  13.      * @return
  14.      */
  15.     public int test(){
  16.         return 666;
  17.     }
  18. }
复制代码
7、修改AndroidManifest.xml文件,如下所示。

终极文件:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3.     package="com.unity3d.player">
  4.     <application>
  5.         <activity
  6.             android:name="com.aitu.unityandroidutils.MainActivity"
  7.             android:exported="true">
  8.             <intent-filter>
  9.                 <action android:name="android.intent.action.MAIN" />
  10.                 <category android:name="android.intent.category.LAUNCHER" />
  11.             </intent-filter>
  12.             <meta-data android:name="unityplayer.UnityActivity" android:value="true"/>
  13.         </activity>
  14.     </application>
  15. </manifest>
复制代码
8、天生jar包
选择菜单栏Build-Make Module,举行build。

天生完成之后,找到对应的jar包。jar包在build/intermediates/aar_main_jar/debug下。

利用解压软件,删除com.unity3d.player包,将jar包和Androidmanifest.xml文件导入到Unity项目中。
Unity调用

在Unity中调用test方法。
  1. /// <summary>
  2. /// 测试
  3. /// </summary>
  4. /// <returns></returns>
  5. private int Test()
  6. {
  7.     using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
  8.     {
  9.         AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  10.         int value = jo.Call<int>("isWiredHeadsetOn");
  11.         return value;
  12.     }
  13. }
复制代码
AndroidJavaObject



  • AndroidJavaObject是java.lang.Object通用实例的Unity表示。
  • 它可以用作任何Java类实例的无范例接口。
  • 官方文档:Unity - Scripting API: AndroidJavaObject (unity3d.com)
方法作用Call调用该对象的Java方法(非静态)。CallStatic调用此类的静态方法。CloneReference创建引用同一Java对象的C#对象的克隆。DisposeIDisposable 回调。Get获取对象中字段的值(非静态)。GetRawClass检索指向 Java 类的原始 jclass 指针。注意:利用原始 JNI 函数必要具备 Android Java 原生接口 (JNI) 的高级知识。GetRawObject检索指向 Java 对象的原始 jobject 指针。注意:利用原始 JNI 函数必要具备 Android Java 原生接口 (JNI) 的高级知识。GetStatic获取对象中静态字段的值。Set设置对象中字段的值(非静态)。SetStatic设置对象中静态字段的值。 AndroidJavaClass



  • AndroidJavaClass是java.lang.Class的通用实例的Unity表示。
  • 继承自AndroidJavaObject
  • 官方文档:Unity - Scripting API: AndroidJavaClass (unity3d.com)
参考文档

Android与Unity交互–接入安卓原生SDK_付帅v的博客-CSDN博客_android 对接unity
尾语
假如有写的不对的地方,欢迎各位大佬批评指正。

来源:https://blog.csdn.net/yr1102358773/article/details/128287330
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

FrankJScott | 2025-5-6 21:15:15 | 显示全部楼层 来自 英国

Great TAJIR4D Info

In reply to the lady talking about permainan slot online, slot mudah menang, joker gaming slot online, permainan slot asli, situs terbesar di indonesia slot, judi deposit pulsa, slot adalah permainan, situs wap togel, permainan slot terpercaya, situs online terpercaya,  I highly suggest this link on login tajir4d blog or game slot judi uang asli, menang casino, situs judi online indonesia, permainan togel slot, judi online deposit pulsa, agen slot terbaik dan terpercaya, togel online terbaik, situs judi slot paling lengkap, agen situs slot online terpercaya, aplikasi slot online uang asli, bearing in mind this recommended login tajir4d site alongside all situs slot live, game slot asli, game judi slot online uang asli, joker joker slot, togel online terbesar dan terpercaya, situs slot joker gaming, situs slot toto terpercaya, di togel slot, situs slot game, situs game slot terbaru, alongside all this helpful hints on login tajir4d forum which is also great. Also, have a look at this look what i found on tajir4d link alternatif link together with situs slot toto, aplikasi togel dan slot, situs judi slot online terpercaya indonesia, situs deposit, judi asli, judi online pulsa, nama situs judi slot online, situs terbaik, judi slot online mudah menang, idn live casino, not to mention this moved here for login tajir4d advice not forgetting sites such as slot judi online terpercaya, permainan slot online yang mudah menang, cara mudah main slot, terbaru slot, situs web slot terpercaya,  my latest blog post for not to mention judi online live, situs togel 2d, master togel slot login, permainan casino yang mudah menang, 100 situs slot,  for good measure. Check more @ Excellent TAJIR4D Tips 1f17844
回复

使用道具 举报

FrankJScott | 2025-5-27 10:50:07 | 显示全部楼层 来自 英国

Useful 7 RAJA TOGEL Tips

To the people inquiring about hasil keluar togel hari ini, hasil keluaran sgp hari ini, togel sdy sgp hk 4d, live draw sgp 6d hari ini tercepat, keluar angka singapura hari ini, prediksi nomor togel singapura, kumpulan situs slot terbaru, rekap togel sgp, prediksi togel sgp, prediksi angka togel sgp hari ini,  I highly recommend this related site on 7 RAJA TOGEL details or keluaran togel sgp hari ini, angka angka togel, live draw sgp 6d hari ini tercepat, data nomor togel sgp, angka keluar sdy, pengeluaran angka sgp, prediksi angka keluar sgp hari ini, sgp pools live draw, data keluaran, keluar angka singapura, as well as this the original source for 7RAJATOGEL details as well as live draw togel singapore, angka jitu togel hk hari ini, live draw sgp hari ini tercepat 6d, bocoran togel sdy hari ini, angka jitu togel singapura, angka togel jitu hari ini, cara mendapatkan angka jitu, nomor togel sgp hari ini, angka pengeluaran singapura hari ini, angka bocoran togel sgp, bearing in mind this this post about 7RAJATOGEL forum which is also great. Also, have a look at this this guy for 7RAJATOGEL info which is worth considering with judi togel sidney, bocoran sgp togel hari ini angka jitu, angka yg keluar sgp hari ini, bocoran sgp langsung dari singapura hari ini, angka jitu togel sydney, angka keluar togel hongkong hari ini, keluar togel sidney, angka bocoran togel hongkong, keluaran togel hongkong, hasil keluar togel hari ini, not to mention this what google did to me about 7 RAJA TOGEL details which is worth considering with data togel sdy sgp hk, keluaran hk sgp sdy, keluaran togel hari ini hk, situs togel angka jitu, data keluaran sgp,  read full article about alongside all angka jitu togel hongkong malam ini, togel singapore hongkong sydney, prediksi angka sgp, tabel keluaran sgp, judi togel online terpercaya,  for good measure. Check more @ Cool AI Stock Investing Platform Website e222ddc
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则