剩下的27天為了預防萬一,我將採用git和github實作版本控制。
(不一定要進行版本管理這一步驟,可以略過明天直接製作遊戲就好唷~:D)
簡單來說是一個紀錄文件變化的軟體。
每一個版本都記錄下來,如果哪一天出錯有大bug,可以叫回前一次的版本,直接回到沒問題的時候,天下太平的好軟體。叫出來之後可以看看被改動的程式碼是哪一些?方便找出問題點並且修正。
安裝下載Git和註冊github的部分,網上教學非常多就不贅述,這篇直接從unity需要的指令開始吧!
1.寫清楚,每一次版本管理內容(commit messege)不要亂寫什麼"喵喵喵",盡量把功能或debug什麼東西描述清楚。
2.勤勞git,做好一個功能git一次,每天git個好幾次都沒關係。
舉手之勞的事情做好,在回顧找程式碼的時候會很舒服;出事之後找版本回來的時候,要修改的內容幅度越小,程式碼越細越輕鬆。不偷小懶到時候真的會恨自己XD
就像寫程式設定變數的時候,剛開始學可能會設定int a,這種完全沒有意義的代號,等程式肥大起來後,在茫茫程式海中看到一個a,一定會氣死,根本不知道是什麼意思有什麼功能,還要找定義。
cd //(change director) 切換工作目錄
cd d: //切到d槽
cd Program Files //進入目錄cd+ +目錄名稱
cd .. //回上一目錄
git init //初始化 Git Repository 初始化GIT專案
git status //觀察Repository檔案,追蹤狀況
git add 檔名.副檔名 //將檔案加入追蹤(index)清單
git add . //將所有改過的檔案都加入追蹤清單
git commit -m"版本更新訊息" //建立一組版本更新(commitment)
git log //查看版本紀錄
git branch //查看分支(Branch)
clear //清除
pwd //查看此頁位置
一、事前準備:建立要版本控制的檔案,要確保檔案沒有二進制文件,並且排除不必要的文件。
二、加入Git:決定好要git的資料夾然後init git,並且設定.gitignore和README.md文件。(準備unity的.gitignore)- 可以使用github提供的~
三、push到github:開好github的repository,拿到網址後push上去。
*如果不使用Git,純使用github desktop可以看這個教學影片
1.下載、安裝、註冊Git和github
2.新增一個專案 (建議名稱和所有路徑使用英文還有千萬不要有空白)
Git中使用中文可能會出現亂碼,為了避免這個情況發生因此遊戲的專案名字和路徑我都設定成英文的
Git處理空白比較麻煩,需要使用CRLF的語法,為了避免節外生枝,這裡先不要有空白。
(直接開一個新專案XD)
3.編輯unity專案設定
a. 設定文件屬性
因為大部分由系統產生的的二進制文件(binary .bin),沒有辦法進行比較,git無法處理合併作業,所以我們要讓系統產生一般文字文件(Text),才能進行版本管理。
Edit > Project Settings
點選Editor
AssetSerialization 設定成 Force Text
bin的優點是檔案較小,如果只有自己開發,沒有要git,沒有要和別人合併檔案可以考慮。
b. 設定版本控制Mode
點選Version Control
Mode設定成 Visible Meta Files
版本控制有四種Mode,把隱藏的Meta文件的屬性設為可見,git就可以存取文件內容
(Meta文件是unity用YAML語言寫的檔案,會儲存GUID、資源導入設定、資源檔案id、位置...重要資訊,如果這個檔案被搞壞或不見,整個遊戲檔案就會悲劇)
4.寫好要忽略的文件檔(準備unity的.gitignore)- 這裡下載github提供的
unity會自動生成很多小檔案,那些小檔案不需要進行版本控制,只需要控制我會手動編輯更改的部分就好。所以要在git加上忽略檔案,標記哪些是我不要版本控制的檔案。
注意.gitignore寫法是否符合自己需求
在使用.gitignore檔案時,檢查路徑有沒有符合自己的需求。
我會另外創一個資料夾,把專案資料夾包在裡面,所以路徑會修改。
.gitignore檔案和glob語法一樣
glob語法
一、檔案名稱表示
[Ll]ibrary/ 資料夾Library或library
[Ll]ibrary 檔案名Library或library
lib.a 叫做lib.a的檔案
.a 叫做.a的檔案
*.a 什麼.a 例如:abc.a、ASD.a都是,只要以.a結尾
Law* Law什麼 例如:Lawer.a Law.obj,只要以Law開頭
二、特殊符號元
* 可取代任意數量字元
** 任意中間目錄,例如a/**/b;a/b/c或a/r/f/b皆符合
[abc] 配對[]內任一字元
[a-z] 配對[-]範圍內任一字元
! 除了
# 註解
/abc 當前目錄中的abc
abc/ abc這個資料夾下
三、官方範例
# 忽略所有的 .a 文件
*.a
# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a
# 只忽略當前目錄下的 TODO 文件,而不忽略子目錄中的 subdir/TODO
/TODO
# 忽略整個build資料夾
build/
# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt ;指忽略doc目錄的,其餘階層不管
doc/*.txt
# 忽略 doc/ 目錄和其所有子目錄下的 .pdf 文件
doc/**/*.pdf
*另外可以用.gitattributes處理LFS (Large File Storage),把指定的大檔案排除在git的存儲庫外,再於原來的位置留下一個指標檔案,將位置指到存儲庫外的檔案。這次的實作中不會用到3D模型那種大檔案,所以這個部分就跳過XD。
1.建立.git
打開git,找到要版本控制的資料夾,然後輸入git init,建立.git 隱藏檔。
用git status撿查一下檔案狀態:D。
已建立.git隱藏檔,然後在這個git的目錄中有status看到的三個檔案。
2.設定.gitignore和README.md文件
這裡有一個問題,.gitignore檔案和README現在是文字檔.txt
我要把他們改成.gitignore跟README.md。
mv hello.html world.html
3. git add (檔名)
將檔案加入暫存,git add . 會將全部的文件都加入
4.將內容commit
並且好好說明commit內容,不要隨便喵喵喵
git status 沒事撿查一下狀態,發現沒問題。
git log 可以撿查commit紀錄。
1.在github建立好repository,並取得HTTPS
2.依照github建議的將git push到1.得到的網址
3.完成後在github上撿查即可