Unity3D 的 Android Plug-in 還有另一種實做方法。當需要使用 Android SDK 中的 Java 物件時,利用這個方法來將 Unity3D 與 Android SDK 結合是比較好的。
簡單的步驟,
1. 先在 Eclipse IDE 中,新建一個 Android Project。
2. 在 Project 的 Property 中,點選 Java Build Path,切到 Libraries 的分頁,按鈕 "Add External JARs…",然後選擇 Unity 安裝目錄,找到 "\Editor\Data\PlaybackEngines\androidplayer\bin" 子目錄裡的檔案 classes.jar 來加入
3. 修改 Activity 的 Java Code
Activity 改成自 UnityPlayerActivity 繼承 ( import com.unity3d.player.UnityPlayerActivity ),在 Activity 的 OnCreate 函式裡,把預先產生的 setContentView() 函式呼叫刪除掉不要使用。
一個範例程式碼如下: ( UnityPlayerExtendActivity.java )
這個範例裡,我們不但使用了 Toast,還用到了Android SDK 中的 藍芽 API。這兩項功能,都是Unity3D無法提供的。
package com.activity.unityextend;
import com.unity3d.player.UnityPlayerActivity;
import android.os.Bundle;
import android.widget.Toast;
import android.bluetooth.BluetoothAdapter;
public class UnityPlayerExtendActivity extends UnityPlayerActivity {
private BluetoothAdapter mBluetoothAdapter = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter == null) {
Toast.makeText(this,
"Bluetooth is not available.",
Toast.LENGTH_LONG).show();
finish();
return;
}
if (!mBluetoothAdapter.isEnabled()) {
Toast.makeText(this,
"Please check your BT settings.", // and re-run this program
Toast.LENGTH_LONG).show();
//finish();
//return;
}
}
}
另外呢,AndroidManifest.xml 這個檔案,需要調整一下。因為我們用到了藍芽功能,所以要開啟應用程式的藍芽權限。
4. 接著從 Eclipse IDE Export 出 jar 檔案。
5. 下一步,開啟 Unity3D,修改 Player Settings 設定。要注意的是, Bundle Identifier 與 Minimum API Level 要與 Eclipse 上的 Android Project 相同。
6. 然後將 Eclipse 的 Android Project 檔案複製到 Unity 專案的目錄下, 這裡有幾個需要複製的檔案。
a. 在 Assets 目錄下建立 Plugins 目錄,再建立 Android 子目錄。b. 將 Android Project 中的 AndroidManifest.xml 複製到 Plugins/Android 目錄內。
c. 在 Plugins/Android 目錄內建立 bin 子目錄,將 Android Project 輸出的 jar 放進來。
d. 最後將 Android Project 內的 res 子目錄複製到 Plugins/Android 目錄內
7. 最後,從 Unity3D Build & Run,就可以使用 Android SDK 提供的功能了。
(Update 2012.7.5) 加入了 AndroidManifest.xml 該修改的部分
14 則留言:
版主您好
請問您一下 , 這方法我試過好幾次 , 輸出到Android手機 無法正常執行
我的手機系統是ICS
無法執行的因素有很多,你的狀況是什麼呢??
斯洛大 我也同樣試了好幾次
但每次都是程式崩潰
不過我拿掉xml檔案後就不會崩潰了
(雖然這樣也無法plugin了XD)
想請教一下有可能是XML的問題嗎?
是不是要增加藍芽權限還是甚麼的?
感謝版主的回應
Android ICS系統 , 使用Unity3D輸出到Android , 執行程式看到Unity3D畫面後,程式就自動跳出
不曉得是哪邊出問題.....
忘記說我的環境
Unity3D 3.5
Android ICS
啊....果然我忘了寫了....
藍芽權限要開...
在 AndroidManifest.xml中,設定藍芽權限
版主請問您一下
如何在 AndroidManifest.xml 中寫 藍芽權限呢,能不能將語法貼出來,謝謝版主
寫法是這樣的 :
uses-permission android:name="android.permission.BLUETOOTH"
uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
(每行的前後有xml 的 tag)
或者,可以從 Eclipse 的 IDE 直接設定
斯洛大~
想請教一下,從Android打包成jar給Unity做Plugin(假設是webwiew或是撥放影片),有可能讓整個畫面的控制權主要還是給Unity而不是jar的功能嗎?
很抱歉,這個我沒有研究過了。>_<
哈~沒關係>< 我在自己摸摸看~
謝啦 !!
主控權是在Unity , SDK包成jar給Unity作擴充功能
這篇文章也可參考看看,同樣方法但是做法不大一樣
http://www.mat-d.com/site/unity-gps-plugin-development-tutorial-building-a-android-plugin-for-unity-with-eclipse-and-ant/
測試過可在Android 2.3和4.03版本上執行
歡迎大家一起與我討論 MSN: s2611480@seed.net.tw
版主您好:
可以詢問一下
如何建立 Android Project
我的選項中只有 1.Android Application Project 2. Android Project Existing Project 3. Android Sample Project
抱歉問題可能很白癡,是我使用錯誤嗎,小弟剛學,麻煩指導一下,感激不盡
張貼留言