1. 程式人生 > >unity與Android的互動初接觸

unity與Android的互動初接觸

嵌入sdk是比較常見的吧,如接入廣告啊,新浪的分享...... 這些都需要接入sdk的,現在我們從最基本的做吧,其實這些和什麼引擎都是沒多大關係的,不管是unity,還是cosos2d......  說白了,這些就是和移動平臺有關係,ios,android,wp8啊。 我這篇文章實現Unity打電話一個簡單的案例!下面開始吧: 1、開啟你電腦中的eclipse軟體 2、新建一個Android專案,我畫紅圈的地方請注意,包名要記好之後要用,最小版本選4.0.以上,之後一路next新建專案直到finish。 3、之後在你的電腦中找到一個叫做classes.jar的檔案,我的unity是unity5.2,對應的路徑是D:\unity\Editor\Data\PlaybackEngines\androidplayer\Variations\mono\Release\Classes。其中unity自從升級後,classes.jar從原來的一個變成了多個,例如我的電腦裡D:\unity\Editor\Data\PlaybackEngines\androidplayer\Variations\il2cpp\Release\Classes裡面也有一個,這就要看你做什麼了,是mono就用上面那個路徑的,是il2cpp就用下面那個路徑的,具體這兩個有什麼區別,請自行百度。
4、將classes.jar直接拖拽至bin當中。 5、右鍵新增至構造路徑。 6、進行程式碼編寫首先開啟AndroidManifest.xml,因為要打電話,所以新增撥號許可權。(<uses-permission android:name="android.permission.CALL_PHONE" />)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.hjc.call"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-permission android:name="android.permission.CALL_PHONE" />
    
    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            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>

7、進行程式碼編寫MainActivity。
package com.hjc.call;

import com.unity3d.player.UnityPlayerActivity;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;

public class MainActivity extends UnityPlayerActivity {

	Activity activity = null;
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	}

	public void call(String str) {
		Intent tt = new Intent();
		tt.setAction(Intent.ACTION_CALL);
		tt.setData(Uri.parse("tel:"+ str));
		startActivity(tt);
	}
	
}
8、之後匯出jar包,右鍵工程->Export->Jar file。
9、unity建立如下圖檔案結構(照做哦)。 10、將eclipse匯出的jar包拖入unity裡面新建的bin資料夾裡。 11、將eclipse工程中的AndroidManifest.xml也拖進unity的Android資料夾中。 12、其實eclipse工程裡面的res檔案也是要拖到unity裡面Android資料夾下的,只是我做的這個暫時用不到res裡面的資源,所以用unity修改一下AndroidManifest.xml的內容,如下:android:theme="@android:style/Theme.NoTitleBar"
android:icon="@drawable/app_icon"
android:label="@string/app_name",這樣就不需要res了。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.hjc.call"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-permission android:name="android.permission.CALL_PHONE" />
    
    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:theme="@android:style/Theme.NoTitleBar"
		android:icon="@drawable/app_icon"
		android:label="@string/app_name" >
        <activity
            android:name=".MainActivity"
            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>

13、unity裡面新建一個指令碼,來呼叫java類。
using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class test : MonoBehaviour {

	public InputField shuru;

	public void callPrint() {
		AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");
		AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject> ("currentActivity");
		jo.Call ("call", shuru.text);
	}

}
14、配置號碼填寫框和一個button,並配置其關係,這一步明白unity的實現很簡單。

15、匯出apk,切記匯出時的包名必須和eclipse工程的包名一致!!
16、在真機上安裝apk。 我的元件做的很隨意,顯得太小了) 如果有錯,歡迎糾正。 附上老大的照片大笑