Mirror Networking 最基本的架構就是 Network Manager 與 Player 物件,本篇文章將會說明要如何快速建置簡易的多人遊戲連線程式。
建立物件及腳本
首先,在 Project 視窗的資料夾中按下 滑鼠右鍵→Create→Mirror,用預設範本建立 Network Manager 與 Network Behaviour 腳本 (名稱自便,以能辨識為主)。
建立兩個空物件,重命名為 BasicNetworkManager 與 BasicPlayer,並在 Player 物件中掛上上一步新增的 Network Behaviour 腳本,與 NetworkIdentity 組件。
BasicNetworkManager 物件一樣掛上前面建立的 Network Manager 腳本,它會自動加入 Kcp Transport 組件。
![[Mirror Networking] Network Manager、Player 物件建置教學 3 bbdcf742a2a0470e8dbf66a35255a310](https://tedliou.com/wp-content/uploads/bbdcf742a2a0470e8dbf66a35255a310.png)
為方便開發,我們要為 BasicNetworkManager 物件新增 NetworkManagerHUD 組件,它會在 Play 時建立一組簡易的網路控制按鈕。
![[Mirror Networking] Network Manager、Player 物件建置教學 4 b97cb534f7eccf674b994e33762022f7](https://tedliou.com/wp-content/uploads/b97cb534f7eccf674b994e33762022f7.png)
為了方便待會編譯出來能觀察成果,我們在 BasicPlayer 下新增一個 Cube,座標記得歸零。
![[Mirror Networking] Network Manager、Player 物件建置教學 5 23df5bc27ec6a915144ade3b446041e8](https://tedliou.com/wp-content/uploads/23df5bc27ec6a915144ade3b446041e8.png)
基本物件已建立完成,接下開始進行參數設定。
配置 Network Manager 玩家設定
請按住 BasicPlayer 物件並拖拉到 Project 中建立預製物件,並將場景中的 BasicPlayer 刪除。
![[Mirror Networking] Network Manager、Player 物件建置教學 6 832eaf15fc665687cb396a6e268f0914](https://tedliou.com/wp-content/uploads/832eaf15fc665687cb396a6e268f0914.png)
點擊 BasicNetworkManager 物件,將剛才建立的 BasicPlayer 預製物件拖拉到 Player Prefab 欄位中。
![[Mirror Networking] Network Manager、Player 物件建置教學 7 e90f809f442ad15af2c6b23ee756c49c](https://tedliou.com/wp-content/uploads/e90f809f442ad15af2c6b23ee756c49c.png)
配置 Network Manager 出生點
新增一個空物件,重新命名為 SpawnPos,調整物件座標到你想要玩家出生的位置,並為它新增 NetworkStartPosition 組件。
![[Mirror Networking] Network Manager、Player 物件建置教學 8 c850e5fcd3c9e7ce089994e76b44c2cd](https://tedliou.com/wp-content/uploads/c850e5fcd3c9e7ce089994e76b44c2cd.png)
你可以多複製幾個 SpawnPos 放在不同座標,讓遊戲有多出生點。
![[Mirror Networking] Network Manager、Player 物件建置教學 9 06cff4f6bae1d256a7191ebff4c83e11](https://tedliou.com/wp-content/uploads/06cff4f6bae1d256a7191ebff4c83e11.png)
接下來查看 BasicNetworkManager 物件的 Inspector 視窗,將 Player Spawn Method 設定值修改城你要的模式:
Random | 隨機從 SpawnPos 中選一個座標生成玩家 |
Round Robin | 循環制生成,會從 Hierarchy 中由上到下按照順序查找 SpawnPos 座標生成,並在最後一個作用完畢後自動切換到第一個生成位置繼續作業 |
![[Mirror Networking] Network Manager、Player 物件建置教學 10 b05d4ad03234f48b9375ac2e2fe1aa7d](https://tedliou.com/wp-content/uploads/b05d4ad03234f48b9375ac2e2fe1aa7d.png)
編譯測試
經由頂部導覽進入 Build Settings 視窗,點擊 Add Open Scenes 按鈕來將當前的場景加入編譯設定。
![[Mirror Networking] Network Manager、Player 物件建置教學 11 ad2a1fa7ece5073465a7de695dcab6f2](https://tedliou.com/wp-content/uploads/ad2a1fa7ece5073465a7de695dcab6f2.png)
![[Mirror Networking] Network Manager、Player 物件建置教學 12 9923e0f2e1a68b2314d1806c5f290e20](https://tedliou.com/wp-content/uploads/9923e0f2e1a68b2314d1806c5f290e20.png)
一樣是為了方便觀察,請點擊左下角的 Player Settings 按鈕,將 Fullscreen Mode 設定值改為 Windowed。
![[Mirror Networking] Network Manager、Player 物件建置教學 13 dd2f60c907d3f7b65f51ac248350d390](https://tedliou.com/wp-content/uploads/dd2f60c907d3f7b65f51ac248350d390.png)
最後按下 Build 按鈕開始編譯。
![[Mirror Networking] Network Manager、Player 物件建置教學 14 c343814b865c2656c92cd8351fcffb8a](https://tedliou.com/wp-content/uploads/c343814b865c2656c92cd8351fcffb8a.png)
啟動編譯後的執行檔,開兩個測試。左上角出現的一坨按鈕就是 NetworkManagerHUD 的功能,其中一個視窗點擊 Host (Server + Client),另一個點擊 Client。
![[Mirror Networking] Network Manager、Player 物件建置教學 15 7cd3fde9f99170c27d87c20b4742287f](https://tedliou.com/wp-content/uploads/7cd3fde9f99170c27d87c20b4742287f.png)
防火牆提示請點擊 允許存取(A)。
![[Mirror Networking] Network Manager、Player 物件建置教學 16 074c09cc2fc4b26513a3d2caedab8e3e](https://tedliou.com/wp-content/uploads/074c09cc2fc4b26513a3d2caedab8e3e.png)
順利的話在兩個視窗中都能看到兩個線上玩家物件。
![[Mirror Networking] Network Manager、Player 物件建置教學 17 1fb83c15a9be67abc973e8a279db5e47](https://tedliou.com/wp-content/uploads/1fb83c15a9be67abc973e8a279db5e47.png)
Network Manager 與 Player 物件的建置教學在此結束,有問題請於留言版提出。