日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(五)Unity插件生成

發(fā)布時(shí)間:2023/12/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (五)Unity插件生成 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1)新建空的AndroidStudio工程,但是新建過程時(shí)最小SDK版本要與unity一致,如下圖所示,本次操作均為api16

?

2)創(chuàng)建Library,如下圖所示,新建module,然后選擇Android Library。

新建模塊為UnityPlugin,如下圖所示,注意此時(shí)的PackageName后續(xù)用得到

4)引入unity的classes.jar

按下圖所示,找到Unity安裝目錄下的classes.jar文件,并放入上述工程中\(zhòng)unityplugin\libs下(即新建Module下的libs下)

?

選擇File-ProjectStructure,調(diào)出Project Structure界面,依次選擇unityplugin(上述建立的module)-Dependencies,然后點(diǎn)擊右側(cè)加號(hào)-Jar dependences,并選擇libs下引入的classes.jar,如下圖所示,確定引入。

?

5)添加插件代碼

在com.idea.unityplugin下新建類UnityPlugin

在類UnityPlugin(繼承UnityPlayerActivity )中添加如下代碼

package com.idea.unityplugin;import android.os.Bundle; import android.widget.Toast;import com.unity3d.player.UnityPlayerActivity;public class UnityPlugin extends UnityPlayerActivity {@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);}// 傳入數(shù)據(jù),并通過toast顯示public void ShowToast(final String message){runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();}});}// 返回一個(gè)字符串(靜態(tài)方法)public static String GetInformation(){return "Android Static Msg";}// 返回一個(gè)字符串(非靜態(tài)方法)public String GetInfo(){return "Android Msg";} }

6)生成jar或者aar包

點(diǎn)擊build.gradle(此插件的gradle),添加如下代碼,操作如下圖所示。

task makeJar(type: Copy) {delete 'build/libs/unityplugin.jar'from('build/intermediates/bundles/release/')into('build/libs/')include('classes.jar')rename('classes.jar', 'unityplugin.jar') }makeJar.dependsOn(build)

?點(diǎn)擊Terminal,輸入gradlew makeJar回車,等待執(zhí)行結(jié)束即可,即可在\unityplugin\build\outputs\aar下目錄下找到.aar文件。

?

7)將6)中aar文件放入unity中Assets文件下Plugins\Android目錄下,同時(shí)新建AndroidManifest.xml文件,并添加如下內(nèi)容

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.xxxx.androidplugin"android:versionCode="1"android:versionName="1.0"><applicationandroid:allowBackup="true"android:label="@string/app_name"android:supportsRtl="true"><activity android:name="com.XXXX.unityplugin.UnityPlugin"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

注意事項(xiàng)如下圖所示

8)調(diào)用代碼

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class CallAndroidMethod : MonoBehaviour {public Button[] buttons;public Text text;private void ShowAndroidToast(){//text.text = "Toast ";using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")){using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity")){text.text = "Toast:";jo.Call("ShowToast", "Android Toast");}}//using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))//{// text.text += " Toast1 ";// using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("crrentActivity"))// {// text.text += " Toast2 ";// //jo.Call("ShowToast", "Android Toast");// jo.CallStatic<string>("GetInformation");// text.text += " Toast3 ";// }//} }private void GetInfomation(){string info = "";using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")){using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity")){text.text = "Static:";info = jo.CallStatic<string>("GetInformation");}}text.text += info;}private void GetInfo(){string info = "";using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")){using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity")){text.text = "Nonstatic:";info = jo.Call<string>("GetInfo");}}text.text += info;}// Use this for initializationvoid Start (){buttons[0].onClick.AddListener(ShowAndroidToast);buttons[1].onClick.AddListener(GetInfomation);buttons[2].onClick.AddListener(GetInfo);} }

然后發(fā)布apk即可用了

出現(xiàn)問題:

1)CommandInvokationFailure: Gradle build failed.

解決:修改Build System為Internal

2)IOException:?Failed?to?Move?File?/?Directory?from?'Temp/StagingArea\android-libraries\app-debug\classes.jar'?to?'Temp/StagingArea\android-libraries\app-debug\libs\classes.jar'.

解決:將插件aar文件用解壓軟件打開(直接雙擊),并不解壓,然后刪除libs下的classed.jar即可。

參考文獻(xiàn):

https://blog.csdn.net/qq_16763249/article/details/81876038(非MainActivity調(diào)用方法,純java類調(diào)用)

https://blog.csdn.net/qq_28775437/article/details/78605691?locationNum=3&fps=1(打包報(bào)錯(cuò)問題匯總)

https://blog.csdn.net/qiu_zhongya/article/details/51419456(主要參考文獻(xiàn)_原文)

?

轉(zhuǎn)載于:https://www.cnblogs.com/llstart-new0201/p/9995022.html

總結(jié)

以上是生活随笔為你收集整理的(五)Unity插件生成的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。