適用於 Unity 的 git ignore 設定 – gitignore setting for unity

如何對 Unity 專案使用 git  管理?或者使用其他的板控時該如何設定?

基本上 Unity 專案是個很複雜的東西,因為很多部分是非文字檔,是不容易進行版本控制的。不過撇開資源檔跟場景檔這些非文字檔不談,官方也有段文字說明了哪些檔案在使用版本控制是需要注意的:Using External Version Control Systems with Unity 。

這篇文章便是以官方的說明為基礎,簡單描述如何設定版本控制中,那些檔案是必須被追蹤,而那些檔案又是可以忽略的。

unity-folder

當你打開 Unity 的專案資料夾,你會看到幾個資料夾跟檔案,如果 Unity 正開著這個專案,資料夾會更多:

  • Library – 可以由 Unity 自行重新產生的資源。
  • Temp – Unity 專案開啟中,會出現的暫存檔案。
  • obj – 同為 Unity 專案開啟中,會出現的暫存檔案。
  • 許多以 csproj、userprefs、sln 為副檔名的零散檔案 – 作為編輯器的設定檔或運作中產生的檔案,是作為編輯器環境相關的設定,與專案內容無關。

以上這些都不是專案的本體,Unity 會自行在缺少時產生,或者只是在編輯專案中會出現,不需要進行版本控制的追蹤

Unity 真正的專案內容存在於這兩個資料夾之中:

  • Assets – 所有於專案中匯入或開發的資源檔及腳本,全部都位於這個資料夾之中,也是在 Unity 編輯器中 Project 視窗所看到的根資料夾,所有的心血都在這裡
  • ProjectSettings – 儲存一些專案相關設定,包括輸出設定、輸入控制器設定、使用的 Uniry 版本等資料。

以上這兩個資料夾便是版本控制的追蹤目標

unity-folder2

其中需要特別說明的是,在 Assets 資料夾中,所有的檔案跟資料夾都會出現一個同名但多了 .meta 的檔案,這些檔案由 Unity 產生,用於儲存同名檔案的相關處理設定,以及腳本與物件之間的關聯。這些meta 檔案千萬要加入追蹤,當這些檔案遺失的時候,最先出現的問題就是場景中的物件上所掛載的腳本會遺失資訊,全部都變成 Missing the script ,重新找回哪個物件該使用哪個腳本,可會是一個巨大的噩夢。

下方附上我自己使用 git 來對 Unity 專案版本控制時會使用的 .gitignore 檔。其他不同的版本控制軟體 (如:svn) 也只要用相同的邏輯去進行設定即可。

# unity ignore dir
/[Bb]in/
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/

# unity ignore file
*.csproj
*.unityproj
*.sln
*.user
*.userprefs
*.meta
*.tmp

# need include the meta of file
!*.*.meta

註:
我的 .gitignore 之中,針對 meta 檔案的設定是先以 *.meta 全部忽略,再以 !*.*.meta 將之歸入追蹤範圍。如此設定的好處是會將資料夾的 meta 檔案忽略,只追蹤個別檔案的 meta 檔。如果專案有特殊的無副檔名二元檔,則必須將這兩行刪去。

參考

https://docs.unity3d.com/Manual/ExternalVersionControlSystemSupport.html

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s