Unity中安卓平台的Theme設定

2021-10-07 07:58:16 字數 2239 閱讀 5482

我們都知道,安卓到現在已經出到了安卓10,在這麼多代的發展中,也從一開始完全沒有設計到現在有專門的theme,一共經歷了幾個大階段,使用形式可以看下表:

安卓版本/**

可用api版本

樣式形式

樣式舉例

android 1.0

level 1

theme.***x

theme.black.notitlebar.fullscreen

android 4.0

level 14

theme.holo.***x

theme.holo.light

android 5.0

level 21

theme.material.***x

theme.material.light

compat支援庫

所有level,引入即可用

關於安卓支援庫,谷歌現在大力推進androidx支援庫,老的android庫正在慢慢淘汰,詳細說明可以看這裡:安卓支援庫

關於安卓原生theme的詳細說明,可以閱讀谷歌安卓官方的說明:樣式和主題背景。

回到unity,unity裡要想進行原生theme的配置,首先需要使用gradle方式進行build,在2017.4之後的新版本中,unity預設都會使用gradle模式進行配置,但是具體的theme配置,還要通過androidmanifest.xml檔案來進行配置。

首先要進入build>build setting> player setting> publish settings\build介面,確認build system選項是gradle:

然後我們開啟unity的安裝資料夾,比如我安裝在c:\program files\unity\2017.4.40c1\中,進入這個資料夾,繼續深入,如果安裝了android外掛程式支援,進入editor\data\playbackengines\androidplayer,檔案目錄如下圖所示:

這個資料夾下存放了當前所有的安卓支援工具(不包括支援庫),比如tools資料夾下有gradle,variations下有unity的編譯庫等等,有興趣的可以逐個翻看,不過我們現在要進入的是apk資料夾,開啟資料夾,可以看到這樣的內容:

做過一段時間安卓版本的同學一定會很眼熟,沒錯,這兩個檔案就是跟安卓原生專案裡對應的androidmanifest.xml檔案和res檔案,再開啟res資料夾,如下:

說到unity中的theme配置,首先還是要以官方的檔案為準:android themes in unity

簡單來說,其實unity早在2023年就做好了這方面的支援,所以在安裝資料夾下的styles中就已經根據版本配置了對應的theme了,我們也可以很容易地在上面的幾個資料夾裡看到,unity設定了unitythemeselectorunitythemeselector.translucent兩種主題,只要直接使用這兩者,unity就會根據api版本自動選擇合適的theme:

<?xml version="1.0" encoding="utf-8"?>

<?xml version="1.0" encoding="utf-8"?>

<?xml version="1.0" encoding="utf-8"?>

當然了,這只是unity自己的theme,如果我們需要自己配置的theme怎麼辦呢?這裡就要注意unity的載入機制了。

但是這樣是不行的!!!

即使你所有的依賴庫都正確設定了,unity還是會報這樣的錯:

所以老老實實使用theme.material風格吧。

Unity 安卓開發

不過不要慌,如果你不想用最新版本也可以這麼幹 1.安裝個最新版本的編輯器並在安裝時勾選android build support那些選項。2.完成安裝後開啟編輯器找到配置的路徑 edit preferences external tools 直接把這些路徑拷貝到你想要用的那個版本編輯器配置。打包ap...

Unity與安卓通訊

unity5.0以後,將unityplayeractivity打成jar包,打包報錯。解決方法 將bin下面所有包含r的類刪掉再打jar包,打jar包命令 cd到classes目錄,jar cvf jar 記錄下plugins android下面的檔案位置 1 jar包 res資料夾 android...

unity中簡單的安卓輸入的方法

之前有個想法整理了一下update方法裡的寫的東西 雖然好像這個東西沒什麼用,反而更麻煩了 鏈結 嘗試寫一些簡單的安卓輸入進行測試 單點觸控按下,抬起,移動,兩指的滑動。新建乙個指令碼用於書寫安卓輸入,新建兩個float變數,這兩個是記錄兩個手指間的距離 寫乙個方法useandroidinput 在...