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 該修改的部分