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」。

有些開發團隊可能整個團隊中只有 1~2 人會直接修改 Unity 專案內容而覺得不需要建立版本控管的機制,但事實上就算整個專案開發團隊只有一個人,版本控管也是相當必要的,對整個專案所帶來的好處在此就不多討論。總之,Unity 除了提供給 Professional 版的用戶享有 Team License 的功能來建立版本控管機制之外,也透過官方文件告知 Personal 版使用者如何使用外部的版本控管機制,但該篇文件所舉的例子是 SVN 的流程,那麼,如果是使用 Git 的話,又應該如何進行呢?



官方文件已經透露一些訊息,官方論壇也曾有過相關的討論,所以,以下是針對實際使用時的做法紀錄。
  • 開啟 Unity,並從選單列選擇 Edit/Project Settings/Editor。
  • 在 Inspector view 的 Version Control 區域的 Mode 欄位,選擇 Visible Meta Files。
  • 在 Inspector view 的 Asset Serialization 區域的 Mode 欄位,選擇適當的選項,在此,我通常選擇 Force Text。
  • 關閉 Uniry。

  • 在 Unity 專案根目錄下建立一個純文字檔,命名為 .gitignore,並輸入以下內容:

# =============== #
# Unity generated #
# =============== #
Temp/
Library/

# ===================================== #
# Visual Studio / MonoDevelop generated #
# ===================================== #
ExportedObj/
obj/
*.svd
*.userprefs
*.csproj
*.pidb
*.suo
*.sln
*.user
*.unityproj
*.booproj

# ============ #
# OS generated #
# ============ #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

如此,關於 Unity 專案設置的部分算是完成了,之後只要將 Git 建立倉庫(repository)時的路徑設置到此專案路徑即可。

以上所建立的 .gitignore 檔案主要是指定要忽略的檔案及目錄,其中比較需要特別注意的是 Library/,這是用於忽略 Unity 專案中的 Library 目錄,但是如果專案內所使用到的 Plugins 包含名稱為 Library 或 library 的資料夾也會同時被忽略而不會進行版本控管,所以如果專案內有相同名稱的資料夾,記得要更改名稱。

順帶一提,官方文件都以 SVN 為範例說明了,為何還要使用 Git 做版本控管呢?SVN 與 Git 的比較,網路上已經有相當多的文章說明,在此就不詳述,會選擇 Git 有個主要原因是想利用 Bitbucket 來儲存專案,Bitbucket 提供五位使用者以內的專案免費使用,而且是無限制的私有倉庫(Unlimited private repositories),同時也可以建立團隊邀請成員共同維護專案,所以對於個人開發或者獨立開發團隊來說,不需要尋找機器架設版本控管的 Server,也不需要另外花時間學習配置 Server 以及網路設置等相關的東西,同時也有方便使用且具備 Git flow 功能的 Client 軟體 SourceTree 可使用,相當方便。只要透過 Bitbucket 網站裡的簡單設定以及配合 SourceTree 的使用,就能輕易地建立好版本控管機制了。

P.S. 目前使用 Unity 版本為 5.0.0f4。