【Unity 教程】用SVN做Unity項目的版本控制(實現多人協作開發) (1) 什麼是版本控制?

【Unity 教程】用SVN做Unity項目的版本控制(實現多人協作開發) (1) 什麼是版本控制?

來自專欄絮大王的Unity插件文檔翻譯小屋

第一次寫教程,我當時希望能夠以簡單易懂的語言寫這篇教程,再加上很多東西都是我自己的理解,所以,如果哪裡有錯誤,希望大家能指出來呢,非常感謝喵!

[提示:看不懂沒關係,絮大王很快就會出視頻教程的!!!文章寫起來很累,累爆炸了……而且視頻應該能讓大家更好的理解吧……總之,我會儘快出視頻噠!]

[另外最後我也會給出這個教程的PDF文檔,大概有60多頁吧……]

目錄

(1) 什麼是版本控制?為什麼要用SVN實現版本控制?

(2) 安裝SVN服務端

(3) 安裝SVN客戶端

(4) 上傳新項目到SVN服務端

(5) 從SVN服務端下載項目到本機

(6) 上傳版本

(7) 更新版本

(8) 實際運用:在Unity項目中使用SVN做版本控制

什麼是版本控制?

首先我們要了解什麼是版本,我們在玩遊戲的時候,經常會遇到版本更新。比如出了個新英雄,可能就是一個新版本,修復了什麼BUG,可能又是一個版本。

那麼什麼是版本控制呢?

版本控制簡單來說就是管理版本(如果你實在不能理解「版本控制」這四個字,你可以把文章里所有的版本控制理解為「版本管理」)。

這裡的版本不是上面所說的遊戲版本,而是工程版本(項目版本)。比如修復了工程中的一個BUG,可能就是一個新版本;比如修改了某個腳本,可能又是一個新版本。

我們可以利用版本控制的軟體,來管理我們的每一個版本。

具體來說,我們可以利用版本控制軟體上傳當前的版本、恢復之前的某個版本。

重要的是,你可以利用版本控制軟體,實現幾個人同時對一個工程(項目)進行操作!

舉個例子,現在有個項目是你和其他3個程序員在做,如果你這邊修改了1個腳本,你需要讓其他程序員也同步你這個腳本, 那麼你需要:把這個腳本文件傳給其他的程序員(用U盤或者QQ等傳輸工具),其他程序員下載你傳的這個文件後,再替換到他們的工程文件當中。

是不是很麻煩?

如果利用版本控制軟體,你只需要在你的電腦上,點擊[上傳]按鈕,軟體就會自動識別你做的修改,然後記錄下來這些修改,並把修改過的文件上傳。

如果,你的同事想同步你所做的修改,他們只需要在他們的電腦上,點擊[更新]按鈕。這樣,軟體就會自動識別【你同事的版本】和【你上傳的版本】 之間的區別,然後軟體會告訴你的同事:哪些文件被改動了。

此時,你的同事可以選擇一鍵下載所有被改動過的文件,或者是自己選擇要下載的文件。

更棒的是:如果你的同事更新完後,發現你做的東西完全不能用,還一堆BUG!那麼他可以把項目一鍵恢復到之前的某個版本。

是不是很方便?

這裡有一幅我自己畫的漫畫,希望可以幫助大家理解什麼是版本控制……

為什麼要用SVN實現版本控制?

其實在Unity上實現版本控制有很多辦法,為什麼我們要選擇用SVN軟體來實現Unity的版本控制?我們來對比下其他方案吧!

1. Unity自帶的版本控制

Unity也內置過 版本控制的功能,叫做Asset Server。

Asset Server真的是爆炸好用!誰用誰知道!

但是在Unity5.6版本以後,Unity官方就去掉了這個功能,改成了新的Unity Teams。

現在Unity自帶的版本控制功能(Unity Teams) 已經完全不是以前的那種了,新的版本控制有以下的問題:

1. 要收費(費用很便宜,每個月只要9美元,我已經付費6個月了)

2. 不支持本機、不支持區域網,必須要用它提供的伺服器

3. 因為是國外的伺服器,所以在國內使用還是會很慢的!(真的超級慢,讓人崩潰)

優點當然很明顯:因為是Unity內置的功能,所以直接使用就可以!

(順帶一提,Asset Server的內核用的是SVN哦!)

2. 版本控制軟體 之 Subversion

Subversion是一個知名的版本控制軟體,我們一般簡稱它為SVN。

使用SVN你可以:

1. 在自己的電腦上進行版本控制(常用於個人項目)

2. 也可以在區域網中進行版本控制(常用於公司)

3. 也可以在互聯網中進行版本控制(常用於異地合作)

而且SVN不收費!有中文支持!而且還有Unity的插件支持!

3. 版本控制軟體 之 Git

我覺得使用SVN和使用Git其實都可以。

但這裡我選擇使用SVN,我自己用了SVN兩年多了,沒覺得有任何不好的地方。

如果真要在SVN和Git當中選一個,這裡引用下我從百度經驗上看到的文章,大家可以做個參考(也歡迎討論噠):

原文地址:jingyan.baidu.com/artic

SVN更適用於項目管理, Git僅適用於代碼管理。

SVN對中文支持好,操作簡單,使用沒有難度,美工人員、產品人員、測試人員、實施人員都可輕鬆上手。使用界面統一,功能完善,操作方便。

Git對程序源代碼進行差異化的版本管理,代碼庫占極少的空間。易於代碼的分支化管理。但是Git也有缺點,它不支持中文,圖形界面支持差,使用難度大。不易推廣。

一些想說的話

你好~感謝你能看到這裡~

絮大王是非常非常喜歡大家在評論區里交流噠~也會讓我學到很多~

但是這裡我有些話想說:如果你還是個可愛的小萌新,還不那麼了解版本控制的話,請一定不要認為SVN是個過時的軟體哦~

評論區里有個知友說的很對:SVN是個很老的軟體,它是十幾年前的軟體。

這是個事實。

但是我很害怕你因為不了解版本控制,從而對這句話產生了誤解,所以我真的很想告訴你:SVN它很老了,但是它並不是一個過時的軟體。

SVN功能強大,如果我們只是因為它是十幾年前的軟體,就去選擇Git,我覺得是有問題的。我們要選擇哪一個,應該是因為它的功能、它的特色,而不是它發布的時間。

其實,在國內,大部分遊戲公司都在用SVN做版本控制 (數據來源於我的朋友和我加的群)

SVN非常簡單,而且我可以有信心講懂它。

但Git的教程我看了很多,幾乎所有的教程都會說:「你不用知道我輸入的是什麼,你只用照著我的輸就可以了。」

所以我至今還沒弄懂Git……

但是我想說的並不是SVN好用,Git難用。

SVN和Git更像是你可以選擇的兩個工具,你覺得哪個更適合你,就用哪個就好。

並不存在SVN是過時的,Git就高大上的情況。

另外,Git的教程很多噠,如果大家覺得SVN不好用,那麼在網上可以搜索到很多Git的教程。

謝謝大家!能跟大家在評論區里交流,真的很開心噠~

我的博客

xudawangs blog - xudawangs Unity相關的博客

推薦閱讀:

關於遊戲中松耦合那些事……
2D動畫的3D體積感:AngerForce幕後故事
遊戲開發的發展前景
虛幻4 Siren的製作
unity3d在android使用sqlite

TAG:SVNSubversion | Unity遊戲引擎 | 遊戲開發 |