在聯網游戲的開發過程中,多開客戶端進行聯調是再常見不過的需求。但是Unity并不支持編輯器多開同一個項目,每次都得項目打個包(耗時2分鐘以上),然后編輯器開一個進程,exe 再開一個,真的有夠XX的。o(╥﹏╥)o沒錯,說的就是我。。。
(注:后文寫了個一鍵配置的工具,一定要看到最后哦~)
這里其實也有替代方案,一種辦法是使用兩臺電腦或者虛擬機,分別開啟兩個Unity客戶端,這樣是能夠實現聯調的需求。但是問題是開發效率如何得到保障,比如我發現了客戶端的某個bug,修改電腦一中的代碼后,電腦二怎么更新到最新的代碼?
我們可以通過git提交和更新、亦或者云盤進行傳輸,但還是那個問題,太慢了!作為開發人員是無法忍受這種延遲的,修改一個bug都要同步個幾分鐘,完成一個項目那還得了?
所以今天要探討的解決方案就是:
如何使用Unity hub在本機多開客戶端,并且保證兩個客戶端使用同一個代碼+資源目錄,一次修改兩個客戶端能夠同時生效。
1. 原因和方案
查閱了一些資料后,發現Unity hub無法多開的原因是:
在使用Unity Editor打開一個Unity項目時,Unity Editor會在項目目錄建立一個Temp目錄,同時對里面的一個UnityLockfile文件進行加鎖,正是由于這個加鎖的文件導致我們不能打開兩個Unity Editor。
所以我們打開兩個Unity Editor的解決方案就是,對除了Temp目錄以外的所有文件目錄做軟連接(類似快捷方式),也就是這三個文件夾:
-
“Assets”、
-
“ProjectsSettings”
-
“Packages”?
2.?指令參數
windows下有一個傳感符號鏈接的工具,使用方式:MKLINK [[/D] | [/H] | [/J]] <鏈接名稱> <目標>
參數 | 描述 |
/D | 創建目錄符號鏈接。默認情況下,mklink會創建文件符號鏈接。 |
/H | 創建硬鏈接而不是符號鏈接。 |
/J | 創建目錄連接。 |
... | ... |
我們這里用到的參數是[/J],語法為:mklink /j 目標文件夾 源文件夾
3.?操作步驟
1.?以管理員身份打開 Cmd(命令行)
2. 使用 mklink 命令 分別創建源項目的 “Assets”、“ProjectsSettings”、“Packages” 這個三個文件夾的軟鏈接。?
注意:
-
mklink命令語法?mklink /j 目標文件夾 源文件夾
-
我這里的源文件夾:TankBattle,目標文件夾:TankBattle_Net2
C:\Windows\System32>mklink /j C:\Code\Unity\TankBattle_Net2\Assets C:\Code\Unity\TankBattle\Assets
為 C:\Code\Unity\TankBattle_Net2\Assets <<===>> C:\Code\Unity\TankBattle\Assets 創建的聯接
C:\Windows\System32>mklink /j C:\Code\Unity\TankBattle_Net2\ProjectsSettings C:\Code\Unity\TankBattle\ProjectsSettings
為 C:\Code\Unity\TankBattle_Net2\ProjectsSettings <<===>> C:\Code\Unity\TankBattle\ProjectsSettings 創建的聯接
C:\Windows\System32>mklink /j C:\Code\Unity\TankBattle_Net2\Packages C:\Code\Unity\TankBattle\Packages
為 C:\Code\Unity\TankBattle_Net2\Packages <<===>> C:\Code\Unity\TankBattle\Packages 創建的聯接
3.?使用 UnityHub 打開這兩個文件夾,啟動項目
4. 運行測試,成功!
5.?后續使用
在源文件夾中修改代碼,軟鏈接得到的目標文件夾會自動修改,只需要ctrl + r?在編輯器中reload下就能搞定,非常方便~
4.?工具
知道了操作步驟,我們還可以進一步提高開發效率,主要是為了方便粉絲們使用,我寫了個小工具,可以一鍵完成上述操作。
操作步驟:
-
下載
我用夸克網盤分享了「Unity編輯器多開」,點擊鏈接即可保存。
鏈接:https://pan.quark.cn/s/23475dc1e5d3
2. 打開
3. 配置
config.txt需要配置源文件夾和目標文件夾路徑,參考:
target_path:C:\Code\Unity\TankBattle_Net3
source_path:C:\Code\Unity\TankBattle
4. 雙擊link.bat完成鏈接操作
5. 使用unityhub打開這個文件夾,就完成了!
放在網盤里了,也算是惠及及人了~O(∩_∩)O哈哈~
好啦,以上就是本期分享的內容。
關注我,和我一起持續學習、無限進步!
?想了解更多游戲開發知識,可以掃描下方二維碼,免費領取游戲開發4天訓練營課程