在製作遊戲的過程中,我們經常會遇到預製體丟失元件的情況,如下圖所示。
預製體丟失元件,一般情況下如果我們不去獲取該元件,就不會報錯或影響遊戲的執行。但是在遊戲載入該預製體時,會報警告,看到console中有警告的話也是非常難受的。考慮到遊戲中使用了上百的預製體,每個預製體又由數個甚至數十個子物體組成,手動尋找丟失元件的預製體的工作量太大,不具有很好的可操作性。
有沒有方法可以獲取丟失元件的預製體呢?答案是有的。
(1)獲取遊戲中的所有的預製體
1getallprefabs()方法首先使用assetdatabase.getallassetpaths()獲取所有的資源的路徑名;然後遍歷所有的資源路徑,找出包含「.prefab」的路徑(即是預製體);返回所有預製體的路徑名的陣列。public
static
string
getallprefabs()29
return
result.toarray();
10 }
(2)查詢丟失了元件的預製體
1使用foreach迴圈遍歷上面獲得的所有的預製體的路徑名。對每乙個預製體路徑名,首先使用assetdatabase.loadmainassetatpath(prefab)方法載入該資源,然後將載入後的資源轉化為gameobject型別的物件。接下來,使用go.getcomponentsinchildren(true)獲取go的所有child的component。這裡有一點要注意的是public t getcomponentsinchildren(bool includeinactive)方法的引數includeinactive要設為true,意思是包括非啟用狀態的物件。最後一步,如果乙個元件丟失的話,獲得的元件值為null。遍歷乙個物體上面的所有元件,找到為null的,即為丟失的元件。string allprefabs =getallprefabs();
2 listresult = new list();
3foreach (string prefab in
allprefabs)417
}18}19
catch
2023 }
主要的方法就是上面的這些。當然在我們的實際工作學習過程中,可以將上面的方法做成乙個外掛程式,方便使用。
Unity 中 Prefab(預製體)的建立工具
很多時候會用到 prefab,因為這個的確使用方便,廢話不多說,直接上 放置在editor目錄中 using unityengine using unityeditor using system using unityeditor.scenemanagement using system.io na...
COD4 Prefabs 預製體的特點和使用
乙個 預製體 prefabs 是乙個代表乙個物件例項的.map地 件 原理上分析,同為map檔案,如果沒有主從備註的話,都是一堆記錄物體堆放資訊的資料格式,所以預製體和地圖的差別非常小,甚至可以互相載入,地圖 載入 預製體 預製體 也可以載入 地圖 此時載入者在這次載入過程中是 地圖 被載入者在此次...
unity 多個預製體的時候,隨機生成某個預製物體
方法1 建立乙個陣列,在介面那裡把預製物體拖進fishprefab裡 public gameobject fishprefab 計時器 float timer 0 void update 方法2 在project面板建乙個resources資料夾,注意 名字不要寫錯,大小寫完也是 把預製體全部放到這...