在 Unity 中,可能經常需要用到一些 Android 或者 iOS 等原生功能,所以動態新增是很常見的。
這邊我們會說明一下 Android 如何動態新增物件到畫面中。
事實上在 Android 開發時,要動態添加物件進來是很容易的,因為 Android 佈局就有提供 addView 來做添加的動作。
舉例來說 LinearLayout 佈局的添加示範:
// 新增一個按鈕 Button btn = new Button( this ); // 取得畫面上的佈局, 並且將按鈕加入該佈局裡 LinearLayout l = (LinearLayout)findViewById(R.id.myLinearLayout); // R.id.myLinearLayout 這名稱是自己定好的 l.addView( btn );
而 Unity 基本上做法是一樣的,只是取得佈局的地方需要修改:
// 新增一個按鈕 Button btn = new Button( this ); // 方法一 : // 取得目前畫面上的佈局, 而且是最底下的那層, 並且將按鈕加入該佈局裡 ViewGroup v = (ViewGroup)UnityPlayer.currentActivity.findViewById(android.R.id.content); v.addView( btn ); // 方法二 : // 取得目前畫面上的佈局, 而且是最底下的那層, 並且將按鈕加入該佈局裡 ViewGroup v = (ViewGroup)UnityPlayer.currentActivity.getWindow().getDecorView().findViewById(android.R.id.content); v.addView( btn );
android.R.id.content 為系統內建的 ID,它代表的物件為每個畫面的最底層佈局。(若有錯請指教...謝謝)
ViewGroup 是所有佈局的父層,所有的佈局都是繼承 ViewGroup 去做延伸的。
因為我們不曉得該畫面的佈局是什麼,所以我們用 ViewGroup 來接佈局。
因為佈局的階層為後加的在上,所以我們動態添加的 Button 階層會是最高的,所以他會疊在所有物件的上面。
PS:以上為 Android 的作法,所以必須由 Android 寫好函數或方法,打包成 JAR 檔後提供給 Unity 去呼叫使用。
詳細可參考 "Android Studio 匯出 JAR 檔 - 在 Unity 中調用 Android Function"。
文章標籤
全站熱搜