2015年6月30日 星期二

Unity:使用 PropertyAttribute 與 PropertyDrawer 製作場景選單欄位

過去曾經發佈過的兩篇文章「Unity:設計靈活的無縫場景轉換機制」與「Unity:設計靈活的無縫場景轉換機制-實作測試」,前篇對於場景名稱的設置方式,主要是使用字串欄位輸入場景名稱,在文章結尾也提到了這種設置方式可能遇到的風險,而後篇文章雖然是前篇的實作,但也針對前篇最後提到的建議,於範例檔裡面使用自定義編輯器介面的方式來改善作法,除此之外,使用 PropertyAttributePropertyDrawer 搭配來製作提供給 public 欄位(Field)使用的屬性(Attribute)也是另一個替代使用字串值欄位來設置場景名稱的好方法。

2015年6月25日 星期四

Unity:製作 UGUI 的 UI 流程管理機制

自從 Unity 4.6 發佈新 GUI 系統之後,Unity 終於有個比較完整的視覺化編輯 UI 工具可以使用,於是,我們可以很方便、直覺的在畫面上添加按鈕,使用拖曳、下拉選單等幾個動作就能設置好 UI 事件應該執行哪個 GameObject 上的哪個 Component 中的功能,所以透過 UI 去觸發我們自己撰寫的程式功能也變得非常簡便,但是整個遊戲內容可能會有相當多的畫面,不同的 UI 按鈕或行為將轉向不同的畫面,也需要開啟不同 UI 視圖,如果沒有規劃好 UI 畫面的動線規則,在複雜的畫面轉換間,將可能會發生很難維護的情形,甚至在未來多次的變更修改後產生不必要的 Bug 而使得 UI 畫面動線變得相當混亂。

2015年6月11日 星期四

Unity:認識 Tag 與 Layer 的差異與應用

相信會使用 Unity 的人都知道 GameObject 有 tag 以及 layer 這兩個變數值(Variables),而在 Inspector view 的遊戲物件名稱下方緊接著就可以找到設定 Tag 及 Layer 的下拉選單欄位,所以 Tag 及 Layer 對 Unity 的使用者來說並不陌生,而通常直覺就是將 Tag 及 Layer 做為遊戲物件的標記分類,但是,它們之間的差異在哪兒呢?什麼用途適合 Tag,什麼用途適合 Layer?

Unity:使用 CreateAssetMenuAttribute 建立 Data Assets 來儲存設定資料

通常開發軟體都會有基本預設的設定值,特別是開發遊戲,總是會有很多遊戲系統、內容設定資料,每個人使用來儲存及設定這些資料的方法都不一樣,例如 XML 文檔、使用符號分隔的純文字檔、JSON 格式的純文字檔、Binary資料檔、Excel 檔.. 等等,不管使用哪一種,都需要有一套編輯這些資料以及寫入、讀出資料的規則及工具,這無非是一種額外的工作流程,但在 Unity 極富彈性的視覺化工作環境裡,我們可以透過建立資料資源檔來使工作變得更加便利以及更加有效率。