Unity Global Support部門制作了一些實(shí)用的小工具免費(fèi)供大家使用,今天要推薦的就是用于批量處理資源的小工具:Asset Auditing谒撼。
Unity Global Support部門主要負(fù)責(zé)對使用Unity引擎的企業(yè)級VIP客戶提供技術(shù)支持,大中華區(qū)已實(shí)現(xiàn)全面覆蓋,目前包括騰訊,網(wǎng)易吕漂,巨人,完美世界等公司已屬于Unity的企業(yè)級VIP客戶尘应。
Asset Auditing主要用于執(zhí)行各資源的審核工作惶凝,比如導(dǎo)入貼圖時(shí)按照統(tǒng)一既定格式進(jìn)行批次設(shè)置,簡單易用犬钢,且具有高度可擴(kuò)展性苍鲜。
今后Unity中國區(qū)Github也會(huì)免費(fèi)提供一些常用的開發(fā)工具。
項(xiàng)目介紹
在開發(fā)Unity項(xiàng)目的時(shí)候玷犹,很多開發(fā)者都會(huì)遇到資源管理的問題混滔。比如因?yàn)橐恍┦韬觯憧赡芡洶岩粡埑蟮?096分辨率的貼圖設(shè)置成壓縮格式歹颓,另外也有可能不小心把Mesh文件設(shè)置成了Read/Write模式坯屿。靠人工來檢查資源的導(dǎo)入設(shè)置往往是不靠譜的巍扛,因此我們開發(fā)了一個(gè)小工具领跛,你可以用它來監(jiān)督所有資源的導(dǎo)入設(shè)置,減少因?yàn)椴徽_的導(dǎo)入設(shè)置帶來的問題撤奸。
導(dǎo)入設(shè)置
在Unity中吠昭,所有要導(dǎo)入到引擎的資源都有各種不同的導(dǎo)入選項(xiàng)。這些選項(xiàng)用來調(diào)整資源的屬性胧瓜、導(dǎo)入精度矢棚、以及壓縮方法等等。某些設(shè)置還會(huì)包含一些重要的平臺(tái)相關(guān)的選項(xiàng)府喳。比如在iOS平臺(tái)蒲肋,你所使用的紋理有可能需要和Android平臺(tái)使用不同的設(shè)置,如果使用手工來管理這些設(shè)置會(huì)是非常困難的,可能會(huì)導(dǎo)致很多錯(cuò)誤兜粘。因此强胰,通過自動(dòng)化的管理工具來執(zhí)行這些操作是一個(gè)非常必要的方式。
如下圖所示妹沙,這是一張紋理的導(dǎo)入設(shè)置:
實(shí)現(xiàn)方法
Unity引擎提供了資源導(dǎo)入的回調(diào)函數(shù),這些回調(diào)函數(shù)是通過AssetPostprocessor API來實(shí)現(xiàn)的熟吏。AssetPostprocessor中的這些函數(shù)會(huì)按照一定的順序執(zhí)行距糖,它們的執(zhí)行順序如下:
OnPreprocess是導(dǎo)入過程中最早執(zhí)行到的,你可以在這里重新指定新的導(dǎo)入設(shè)置牵寺。我們在工具中會(huì)設(shè)置相同類型的資源使用統(tǒng)一的設(shè)置就是在這里完成的悍引。
一旦模型和材質(zhì)導(dǎo)入完成之后,引擎會(huì)根據(jù)資源內(nèi)的數(shù)據(jù)創(chuàng)建GameObject層級帽氓。每個(gè)GameObject會(huì)拿到它對應(yīng)的MeshFilter趣斤、MeshRenderer、MeshCollider組件等等黎休。在把材質(zhì)賦值給MeshRenderer之前會(huì)調(diào)用OnAssignMaterialModel函數(shù)浓领。
在GameObject初始化MeshRenderer和用戶數(shù)據(jù)之后,OnPostprocessGameObjectWithUserProperties會(huì)被調(diào)用势腮。這會(huì)在它的子GameObject生成之前調(diào)用联贩。
如果前面沒有禁止動(dòng)畫生成設(shè)置的話(請查看ModelImporter.generateAnimation),接下來會(huì)生成SkinnedMesh和Animation捎拯。如果可能的話泪幌,Avatar也會(huì)被創(chuàng)建出來并且執(zhí)行GameObject的層級優(yōu)化,然后會(huì)調(diào)用OnPostprocessModel函數(shù)署照。
對SpeedTree資源來說會(huì)調(diào)用OnPreprocessSpeedTreee和OnPostprocessSpeedTree函數(shù)祸泪,這和OnPreprocessModel以及OnPostprocessModel函數(shù)是類似的。
使用方法
正確使用該工具建芙,大致分為以下步驟没隘;
一、將AssetAuditing工具導(dǎo)入到工程岁钓。
二升略、創(chuàng)建資源導(dǎo)入格式文件。
點(diǎn)擊Unity編輯器的Assets/Create Asset Auditing Rule菜單屡限,在編輯器的Project窗口里會(huì)創(chuàng)建一個(gè)New Asset Rule文件品嚣。如下圖所示:
在上圖中,Asset Rule Type包括Any钧大,Texture翰撑,Mesh三個(gè)選項(xiàng)。TEXTURE SETTINGS下屬內(nèi)容對應(yīng)貼圖屬性信息,即所有對應(yīng)的Texture都將應(yīng)用該面板中的屬性設(shè)置眶诈。例如勾選下方的Generate Mip Maps則表示所有的Texture都將生成Mip Map涨醋。MESH SETTINGS下屬內(nèi)容對應(yīng)網(wǎng)格的屬性信息,即所有對應(yīng)的Mesh都將應(yīng)用該面板中的屬性設(shè)置逝撬。
相應(yīng)信息設(shè)置完畢后浴骂,只要點(diǎn)擊Apply按鈕就會(huì)對相應(yīng)的資源類型執(zhí)行相關(guān)的設(shè)置。
如果希望對該功能進(jìn)行擴(kuò)展宪潮,可以對Editor目錄下的AssetRuleInspector腳本進(jìn)行簡單修改溯警,以達(dá)到實(shí)際需求。
三狡相、設(shè)置導(dǎo)入?yún)?shù)梯轻。
導(dǎo)入格式文件跟其所在的文件夾相對應(yīng),如下圖所示尽棕,Texture目錄下對應(yīng)的貼圖都會(huì)統(tǒng)一采用Texture Rule格式文件所設(shè)置的屬性信息:
同理喳挑,如果需要設(shè)置模型數(shù)據(jù)的導(dǎo)入格式,則如下圖所示滔悉,只需要在模型文件所處的文件夾下存儲(chǔ)一份格式文件即可:
設(shè)置完參數(shù)后請點(diǎn)擊Apply按鈕伊诵,然后工具會(huì)自動(dòng)化處理相關(guān)的資源文件,將他們的導(dǎo)入設(shè)置按照配置文件的內(nèi)容進(jìn)行統(tǒng)一設(shè)置回官,并且重新導(dǎo)入資源文件日戈。