Unity調用Android類方法-創(chuàng)新互聯(lián)

1. 添加Unity的classes.jar文件

創(chuàng)新互聯(lián)主營三河網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都app軟件開發(fā),三河h5微信小程序搭建,三河網(wǎng)站營銷推廣歡迎三河等地區(qū)企業(yè)咨詢

創(chuàng)建一個Android工程AndroidUnityDemo。

由于Unity的版本不同,直接在Unity安裝包文件夾里面搜索classes.jar文件,如果有多個classes.jar文件,一般選擇的是mono/Release文件夾下的classes.jar文件。

將classes.jar文件放在app文件下的libs文件夾下。

 Unity調用Android類方法

然后,更新一下。

 Unity調用Android類方法

2. 編寫Android類

打開MainActivity.java類,讓MainActivity類繼承于UnityPlayerActivity類,如果提示類不存在,說明unity的classe.jar文件沒有加載進來。
刪除setContentView(R.layout.activity_main);
MainActivity.java

Unity調用Android類方法

 1 package com.xxxxxx.androidunitydemo; 2  3 import android.os.Bundle; 4 import android.util.Log; 5  6 import com.unity3d.player.UnityPlayerActivity; 7 public class MainActivity extends UnityPlayerActivity { 8     @Override 9     protected void onCreate(Bundle savedInstanceState) {10         super.onCreate(savedInstanceState);11     }12     public void test1()13     {14         Log.v("Android_Unity", "no return value and no parameter");15     }16     public String test2()17     {18         Log.v("Android_Unity","have return value and no parameter");19         return "Hello Unity";20     }21     public void test3(String par)22     {23         Log.v("Android_Unity","no return value and have parameter");24         Log.v("Android_Unity",par);25     }26     public String test4(String par)27     {28         Log.v("Android_Unity","have return value and have parameter");29         Log.v("Android_Unity",par);30         return "Hello Unity";31     }32     public static void test5()33     {34         Log.v("Android_Unity", "static function");35     }36 }

Unity調用Android類方法

3. 打包成arr文件

打開build.gradle文件,將apply plugin: ‘com.android.application’修改為apply plugin: ‘com.android.library’,將applicationId ‘com.XXXXXX.androidunitydemo’刪除。
Build.gradle

Unity調用Android類方法

 1 apply plugin: 'com.android.library' 2 android { 3     compileSdkVersion 23 4     buildToolsVersion "23.0.3" 5     defaultConfig { 6         minSdkVersion 15 7         targetSdkVersion 23 8         versionCode 1 9         versionName "1.0"10     }11     buildTypes {12         release {13             minifyEnabled false14             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'15         }16     }17 }18 dependencies {19     compile fileTree(dir: 'libs', include: ['*.jar'])20     testCompile 'junit:junit:4.12'21     compile 'com.android.support:appcompat-v7:23.4.0'22 }

Unity調用Android類方法

如果不用在Unity中添加Android的res文件的話,將AndroidManifest文件中使用res的部分刪除。修改AndroidManifest.xml文件,加入android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">與<meta-data android:name="unityplayer.UnityActivity" android:value="true" />

AndriodManifest.xml

Unity調用Android類方法

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xxxxxx.androidunitydemo"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk        android:minSdkVersion="15"
        android:targetSdkVersion="23" />
    <application        android:allowBackup="true"
        android:label="AndroidUnityDemo"
        android:supportsRtl="true" >
        <activity android:name="com.xxxxxx.androidunitydemo.MainActivity"
                  android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
          <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
        </activity>
    </application></manifest>

Unity調用Android類方法

打包文件,點擊Build->Build Apk,點擊Show in Explorer,打開arr文件所在文件夾,點擊outputs->arr,就可以看到app-debug.arr壓縮包。

Unity調用Android類方法

Unity調用Android類方法

4. 創(chuàng)建一個簡單場景

創(chuàng)建一個Unity項目名為UnityAndroidDemo。

點擊File->Build Setting,點擊Android,在點擊Switch platform按鈕,進行平臺轉換,點擊Player Settings,在Inspector會看到具體內容,點擊Other Settings,找到Identification中的Bundle Identifier,將其內容修改成Adnroid的packageName,也就是AndroidManifext.xml文件中package的值。

點擊File->Save Scene,保存場景。

5. 將AndroidManifest.xml與arr文件加入到Unity項目中

在Project里創(chuàng)建文件夾Plugins,在文件夾Plugins文件夾里創(chuàng)建文件夾Android,將app-debug.arr文件解壓,將其中的classes.jar文件與AndroidManifest.xml文件取出來放入Unity的Android文件夾下。

 Unity調用Android類方法

6. 調用Android類

打開Main Camera,點擊Add Component->New Script,創(chuàng)建一個c#文件,點擊Create and Add。

 Unity調用Android類方法

打開NewBehaviourScript.cs文件,進行編寫。

Unity調用Android類方法

 1 using UnityEngine; 2 using System.Collections; 3  4 public class NewBehaviourScript : MonoBehaviour { 5     // Use this for initialization 6     void Start () { 7     } 8     // Update is called once per frame 9     void Update () {10         if (Input.GetKey(KeyCode.Escape))11             Application.Quit();12     }13     void OnGUI()14     {15         if (GUILayout.Button("NoReturnValueAndNoParameter"))16         {17             AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");18             AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");19             jo.Call("test1");20         }21         if (GUILayout.Button("HaveReturnValueAndNoParameter"))22         {23             AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");24             AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");25             string returnValue = jo.Call<string>("test2");26             Debug.Log("Have Return Value And No Parameter Return Value : " + returnValue);27         }28         if (GUILayout.Button("NoReturnValueAndHaveParameter"))29         {30             AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");31             AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");32             jo.Call("test3","Hello Android");33         }34         if (GUILayout.Button("HaveReturnValueAndHaveParameter"))35         {36             AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");37             AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");38             string returnValue = jo.Call<string>("test4","Hello Android");39             Debug.Log("Have Return Value And Have Parameter Return Value : " + returnValue);40         }41         if (GUILayout.Button("staticFunction"))42         {43             AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");44             AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");45             jo.CallStatic("test5");46         }47     }48 }

Unity調用Android類方法

7. 運行結果顯示

 Unity調用Android類方法

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

文章名稱:Unity調用Android類方法-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://bm7419.com/article36/hdopg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設、響應式網(wǎng)站、微信公眾號、網(wǎng)站設計公司Google、網(wǎng)站設計

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設