SVN(Subversion) 一直是大家愛用的版本控管軟體 (Git 最近好像比較紅),第一次準備用Unity開發專案的朋友一定很疑惑,到底Unity專案要上傳哪些部分到SVN上才能好版本控管?Unity整體專案除了Script本身外,還包含了許多他特有的東西,如:Prefab、Material、Texture、Shader、Layer、Tag等,這些跟以前純C/C++、JAVA
Code以外的東西。
拉裡拉紮的講一堆,其實就幾個重點把握好就OK了,來看看吧!
開啟Unity對外部版本控制的選項。Editor -> Project Setting -> Editor,選擇Meta
File。開啟後,Unity會為每個Asset檔案多產生一份與檔名相同的meta file,其中連資料夾也會有。例如:ABC.png就會在同一個位置下出現ABC.png.mata的檔案。
這個Meta file裡頭存放了Unity對每個Assets之間的連結,例如:那個Component與那個Perfab有關連,所以千萬別忘了上傳至SVN。
基本上你只需要上傳Assets資料夾底下,你所擺放的資料,也就是專案所用到的所有素材,例如:Script、Shader、Texture、模型檔。
Assets外的所有檔案與資料夾都是Unity自行產生的。裡面其實保存了一些雜七雜八的 Cache 資料。這些資料會根據使用者不同的操作,產生一些每個人都不一樣的Cache檔。
將這些東西上傳至 SVN,就很容易在 Merge 時出現 “衝突"。 所以根據我自己的經驗這些就是不上傳。那Editor這些設定怎麼辦?根據網友Hudson的轉述,可以將ProjectSettings也上傳至SVN這樣就可保有設定,但其他部分還是不要上傳。
至於兩個人同時修改 “場景檔" 所造成的衝突,如果你是非Pro的版本那 “無解"。Unity在3.5版本之後可以將場景格式改為 Text Mode,設定的地方跟 Meta file 一樣 Editor -> Project Setting -> Editor,將 Asset Serialization 改為 Force Text 就可以了。這樣 SNV 就可以幫你 Merge 同一場景不同的修正。
Centralized
design pattern來解這個問題。或多或少可以減輕一點負擔。(PS:
此段內容由Hudson提供意見修正)
當然啦!這篇官方的參考說明:Using External Version
Control Systems with Unity,讀一讀也是很有幫助的。
以上就是小弟在三個專案上使用SVN與Unity做結合的一點心得。如有錯誤的地方還請大大不吝嗇指教,謝謝!
(PS: 在Unity Store上有賣一個叫EZ
SVN的東西,不知道有沒有人玩過。有的話看能能跟大家分享一下這是啥東西,一個要賣$5.00耶!!)
當unity遇上svn!版本控管的二、三事/
SVN(Subversion) 一直是大家愛用的版本控管軟體 (Git 最近好像比較紅),第一次準備用Unity開發專案的朋友一定很疑惑,到底Unity專案要上傳哪些部分到SVN上才能好版本控管?Unity整體專案除了Script本身外,還包含了許多他特有的東西,如:Prefab、Material、Texture、Shader、Layer、Tag等,這些跟以前純C/C++、JAVA
Code以外的東西。
拉裡拉紮的講一堆,其實就幾個重點把握好就OK了,來看看吧!
開啟Unity對外部版本控制的選項。Editor -> Project Setting -> Editor,選擇Meta
File。開啟後,Unity會為每個Asset檔案多產生一份與檔名相同的meta file,其中連資料夾也會有。例如:ABC.png就會在同一個位置下出現ABC.png.mata的檔案。
這個Meta file裡頭存放了Unity對每個Assets之間的連結,例如:那個Component與那個Perfab有關連,所以千萬別忘了上傳至SVN。
基本上你只需要上傳Assets資料夾底下,你所擺放的資料,也就是專案所用到的所有素材,例如:Script、Shader、Texture、模型檔。
Assets外的所有檔案與資料夾都是Unity自行產生的。裡面其實保存了一些雜七雜八的 Cache 資料。這些資料會根據使用者不同的操作,產生一些每個人都不一樣的Cache檔。
將這些東西上傳至 SVN,就很容易在 Merge 時出現 “衝突"。 所以根據我自己的經驗這些就是不上傳。那Editor這些設定怎麼辦?根據網友Hudson的轉述,可以將ProjectSettings也上傳至SVN這樣就可保有設定,但其他部分還是不要上傳。
至於兩個人同時修改 “場景檔" 所造成的衝突,如果你是非Pro的版本那 “無解"。Unity在3.5版本之後可以將場景格式改為 Text Mode,設定的地方跟 Meta file 一樣 Editor -> Project Setting -> Editor,將 Asset Serialization 改為 Force Text 就可以了。這樣 SNV 就可以幫你 Merge 同一場景不同的修正。
非Pro的使用者要規避這個問題,其實可以從一些設計上去避免,例如:將彼此溝通的資料擺在一個Singleton的class裡頭,最為共同存取之用;也可以試試Centralized
design pattern來解這個問題。或多或少可以減輕一點負擔。(PS: 此段內容由Hudson提供意見修正)
當然啦!這篇官方的參考說明:Using External Version
Control Systems with Unity,讀一讀也是很有幫助的。
以上就是小弟在三個專案上使用SVN與Unity做結合的一點心得。如有錯誤的地方還請大大不吝嗇指教,謝謝!
(PS: 在Unity Store上有賣一個叫EZ
SVN的東西,不知道有沒有人玩過。有的話看能能跟大家分享一下這是啥東西,一個要賣$5.00耶!!)