Skip to main content

快速開發小訣竅(二):彈性修改多個物體

開發到中後期時,物件、介面一定會有很多,這時如果想要一次改變許多物體,例如:全部介面的按鈕事件設定、物件階層改變、特定 Component 設定、增加等等,如果使用手動的方式,會非常沒有效率,這時就可以使用 Editor Script 依據需求彈性修改物件。

 

本系列其他文章

 

使用環境 與 版本

  • Window 7
  • Unity 5.2.4

 

怎麼取得 Scene 中物體?

  1. 透過 Selection 取得選中的物體
  2. 使用 GameObject.FindXXX 相關方法找尋物體
  3. 透過特定物件,取得特定物件下的所有子物件,等等過濾方式

 

實做

需求 (此處簡單舉例,實際情況更為複雜)

1.尋找所有子物件中名稱為 Player 的物件

2.將 Player 的 Collider enabled false

3.在 Player 下增加一個子物件

4.同時子物件名稱命名為 Player Child

 

開始實作

1.目前物體階層

Demand_01

 

2.實作 Editor Script

A.使用 Selection 方式

Line 6:實作 unity menu

Line 10:取得目前 Scene 中選中物件

Line 19:依序取出子物件

Line 21~22:如果子物件下還有物件,使用遞迴再次呼叫

Line 25:判斷 GameObject Name

Line 27:修改 BoxCollider enabled

Line 29~30:建立物件、設定階層

 

B.使用 GameObject.FindXXX 方式

Line 6:實作 unity menu

Line 9:尋找 Scene 中類型為 Transform 的物件

Line 16:判斷 GameObject Name

Line 18:修改 BoxCollider enabled

Line 20~21:建立物件、設定階層

 

3.點選選單執行方法

Demand_03

 

4.結果

Demand_02

 

後記

經由 Editor Script 我們可以彈性修改多個物體,而不是使用手動的方式選取修改,進而提升開發效率,甚至可以根據不同需求與規格製作 Editor Window 工具。

 

參考資料

 

歡迎轉載,並註明出處 !

 

Arkai

獨立遊戲開發、技術分享。 Indie Game development and technology sharing.

什麼?不懂! 那就提問吧!

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料