2015年10月25日 星期日

Unity:使用 UnityEngine.Events 讓程式更靈活、穩定

自從 Unity 4.6 發佈新的 GUI 系統之後,我們可以從所建立的 GUI Control 發現新的事件欄位,例如,建立一個 Button,可以從 Inspector 視窗裡面的 On Click 欄位指定當按鈕被點擊時要去執行那一個 GameObject 上的哪個 Component 的功能,使得按鈕事件可以更視覺化、更彈性的編輯,當然,其他的 GUI Control 也都有類似的欄位可以做這樣的設置,而這個欄位則是由 UnityEngine.Events 底下的 UnityEvent 型別所產生的,我們自己所製作的 Component 同樣也可以提供這樣的欄位,使可以視覺化編輯,以及讓程式更加彈性。

2015年9月22日 星期二

Unity:解決 Unity 5.2 無法 Build 到 iOS 的問題

最近在開發的專案,自從安裝 Unity 5.2 之後,就沒有 Build 到 iOS 行動裝置測試過,最近因為 Xcode 7 發佈,就想 Build 測試看看是否有需要調整的地方,結果,卻卡在 Unity 要 Build 成 Xcode 專案的地方就發生錯誤,網路上找不到相關的解決辦法,幸好,最後有解決了,所以,在此記錄下來,希望可以幫助到有同樣困擾的朋友們。

2015年7月19日 星期日

Unity:使用 UGUI 的 ScrollRect 製作虛擬搖桿

Unity 的新 GUI 系統(UGUI)提供很多內建的 UI 元件可以直接視覺化的建立、編輯 UI,可惜並沒有提供虛擬搖桿的元件,幸好,UGUI 的 ScrollRect Component 不只可以用於 Scroll View 的製作,同時,因為能計算內容物的 X 軸與 Y 軸的偏移,所以,也能用於製作虛擬搖桿。

2015年7月7日 星期二

Unity:Google 的 AdMob 廣告做法(iOS & Android)

以往,要使用 Unity 接入 Google 的 AdMob 廣告,需要自行下載 AdMob SDK 來撰寫 Plugin,或者直接購買其他開發者做好的 Plugin 來使用,如今,由於 Google Developers 網站上直接就有提供免費的 Plugin 可供使用,而且網站上也提供了中文版說明,使得 Unity 套用 AdMob 廣告變得方便很多,不過,實作上還是有些細節要特別注意,這在該網站上就沒有詳細說明。

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 極富彈性的視覺化工作環境裡,我們可以透過建立資料資源檔來使工作變得更加便利以及更加有效率。

2015年5月30日 星期六

Mac 磁碟無法修復如何備份資料

通常 Mac 被認為是比較穩定的系統,畢竟軟硬體都是 Apple 的,不過,電腦使用久了,或者是操作不當都可能會發生問題,但當發生無法開機且硬碟發生問題無法修復時,我們又應該如何備份出我們的寶貴資料呢?

2015年5月26日 星期二

Unity:如何查找 Mono 版本

前陣子讀到一篇關於 Unity 的 C# 效能改善的文章「C# memory and performance tips for Unity」,文中說明了記憶體資料儲存與GC(garbage collector)對效能的影響,而新的 GC 方法將比較快且避免造成程序運作暫停的現象,文中提到不幸的是 Unity 使用的 Mono 版本是 2.6.5,他使用較古老的 Boehm GC,這時讓人出現一個疑問,如何知道自己使用的 Unity 所使用的 Mono 版本呢?

2015年4月8日 星期三

Unity:UGUI 應對各種螢幕自動調整大小及位置

以前曾經發佈過兩篇有關 GUI 自動調整的文章「Unity 自動調整 GUI 縮放比例及位置」以及「Unity:應對各種螢幕比例自動調整畫面縮放及位置」,
自從 Unity 於 4.6 版發佈了新的 GUI 系統(UGUI)之後,使用 Unity 製作 UI 變得更為簡單方便,同時也比較不需要依賴第三方製作的 UI 工具了,在事件系統上也有了一些革新,UI 事件與 Component 之間變得更加視覺化,彼此間的耦合度大大降低,而使得使用上更為彈性,雖然,UGUI 解決了許多以前 UI 製作上面的問題,但實際開發時,還是有些部分需要使用者做些調整。

2015年3月9日 星期一

Unity:使用 Git 做專案版本控管

開發軟體的專案,少不了都要做版本控管這件事,而 Unity 本身也有提供相關的機制給使用者,過去需要另行購買的 Team License,現在已經包含在 Unity 5 Professional 裡面,可以讓使用者從 Unity Editor 選單列的 Window/Version Control 配合自行架設的 Server 做專案的版本控管。對於,不是使用 Unity 專業版的用戶,因為不具備有 Team License,所以在官方文件裡也提供了使用外部版本控管的方法,詳見官網文件「Using External Version Control Systems with Unity」。

2015年1月15日 星期四

解決 Dia for Mac OS X 在 Yosemite 無法開啟的問題

為了工作需求,臨時要畫流程圖才發現 Mac 作業系統內建的軟體那麼多,卻好像沒有畫流程圖專用的軟體,想起了以前使用 Windows 時使用過一個免費軟體 Dia 來畫 UML 圖,似乎也很適合畫流程圖,上網查了一下,果然是跨平台的 Open Source 軟體,但安裝過程遇到一些狀況,最後竟無法開啟,上網查找了一些資料,最後終於解決了,所以特別在此記錄下來。