使用SVN管理unityproject




 

我們的項目使用SVN管理。這幾天遇到了幾個問題,攻克了一下。順便做了一個總結。

1.關於使用SVN管理unity項目的一些設置和說明

首先在unity中進行兩部操作:Edit->ProjectSettings->Editor菜單。選擇Verion Control Mode VisivaleMeta File。選擇Asset SeriaLization Mode ForceText。第一步選擇外部版本號控制可見Meta文件,這樣子會為Asset目錄以下每一個資源創建一個.Meta文本文件,來記錄unity所須要的重要信息。

重要在哪里。后面會看到。第二步是由於unity大部分文件都是二進制存儲的,會頻繁導致莫名其妙的沖突,會帶來巨大的數據量。不能合並,另一個優點,在blame的時候比較清晰直觀。

而能夠merge場景帶來的方便的無可計量的。文章的第二第三點環繞這個兩個設置做了具體說明。

以下先談談SVN文件夾的創建。Window下新建的unityproject一般文件夾例如以下:

image_20141120150836.png

 

這里我們須要關心的僅僅有兩個目錄:AssetsProjectSetting。前者不用多說。后者保存一些setting文件tag layerphysics等等也是必要的。而Library不過導入資源的一個緩存,網上有說法要保留各種manager文件之類,事實上不是必需的。

是剩下的都是mono或者VS產生的不用關心的。

所以正式項目一般都是本地做好須要SVN保存的兩個目錄,然后上傳到SVNserver,這樣能夠在保證不影響工作的情況下把unityproject的最小量保存。

 

2.兩個問題:預設腳本丟失和文件移動

       前面常常會出現這種情況:我做好了一個prefab。包含gameobject和掛在上面的腳本,上傳prefabcs文件到SVN,但是別人pull下來project后發現你這個prefab的腳本是missing的。這個是無比讓人頭疼的,又一次拖一遍的工作量是巨大的,並且又一次設置腳本參數也是一件非常頭疼的事情。這個問題原因就在於這就是前面提到的meta文件。Meta文件中有個重要的東西就是guidguid是文件唯一標示,文件中的關聯關系都是基於guid而不是基於文件名稱和文件路徑的。當一個新文件創建之后,unity會自己主動給它生成一個guid

假設沒有上傳meta,所以兩個project的guid不同,則關聯關系自然找不到。

所以我們也必須把相應的meta文件上傳。當然,假設願意解析meta文件,然后直接改動guid就是更好的做法了。當然相對的也easy出錯。

相同的。當移動或重命名資源時。確保你也對應的移動或重命名了meta文件。當腳本文件內容發生變化的時候,實際上guid是不會發生變化的。並且unity事實上並不基於文件內容增量變化的版本號管理。而是覆蓋式的。

所以官方文檔提到文件的移動的時候也特別小心翼翼,直接在unity中操作是最好的方式。這里特別要說明的是gitSVN的差別,在unity中新建的文件,git會默認在本地庫給你找出來,然后讓你提交。而SVN則不會。須要你手動的add。假設沒有選擇顯示meta,就悲劇了。

這里就是上文提到Verion ControlMode選擇可見meta的重要性了。

 

3關於場景的merge

       前面我們提到了我們讓資源序列化為text。相同的對一個場景進行改動。

A添加一個怪物,B添加了一棵樹。

A先進行提交,B則必須進行merge。打開場景會告訴你有沖突,場景中什么都沒有。

打開場景的文本格式,由於我們之前選擇用text來存儲資源,這時候的優點就來了。文件的text格式應該是這種:

Mine

image_MINE.png

 

Middle

image_MIDDLE.png

 

 

Theirs

THEIRS.png

 

Ok,這個顯而易見了。具體的XXXX內容有興趣的話能夠具體的看看,可是我想。大多數的基於場景的merge應該僅僅合並不改動吧。所以說,對場景的改動之前還是團隊內部要協商好,場景的merge費事並且不討好。

 

也是剛用SVN管理unity項目,所曾經面兩個問題還都被我遇到了。所幸涉及的反復工作量不大。上論壇的時候有看到這樣一句話“用一個人當作SVN管理員。

全部東西都是通過這個管理員提交。

其余人僅僅能下載(沒提交權限)

改動的全部東西全部給管理員整合”。事實上也認為挺不錯的,特別是項目大起來后。涉及美術策划和程序交互的時候,這個管理員既整合又優化,能夠解決大量的合作問題。對項目非常有優點。

希望對用unity工作的團隊有所幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM