Unity3D開發(fā)標準教程-網絡開發(fā)基礎_第1頁
Unity3D開發(fā)標準教程-網絡開發(fā)基礎_第2頁
Unity3D開發(fā)標準教程-網絡開發(fā)基礎_第3頁
Unity3D開發(fā)標準教程-網絡開發(fā)基礎_第4頁
Unity3D開發(fā)標準教程-網絡開發(fā)基礎_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

網絡開發(fā)基礎

第1頁11.1多人聯(lián)網——MultiplayerNetworking

多人聯(lián)網的工作比較瑣碎、復雜,世界各地各種各樣的計算機上不同的工程實例之間的同步與通信會出現(xiàn)許多問題。在Unity內置的多人聯(lián)網功能(MultiplayerNetworking)與高級應用程序接口(HighLevelAPI,HLAPI)的幫助下,創(chuàng)建多人在線工程會變得更容易。

11.1.1NetworkManager網絡管理器網絡管理器是一個多人游戲的核心部件,管理著多人游戲的各個方面。它的功能包括游戲狀態(tài)管理、派生管理、場景管理、調試信息、自定義化等功能,如圖11-1所示。對于高級用戶,可以從NetworkManager中產生一個類來定制化這個組件。NetworkManager網絡管理器中的常用方法如表11-1所列。

圖11-1網絡管理器設置界面第2頁

11.1.1NetworkManager網絡管理器

方法名方法含義方法名方法含義GetStartPosition

在場景中找到游戲對象的起始位置

IsClientConnEcted

檢查NetworkManager是否有客戶端并已連接到服務器OnClientConnect連接到服務器時在客戶端調用OnClientDisconnect從服務器斷開連接是調用客戶端OnClientError在發(fā)生網絡錯誤時調用客戶端OnClientNotReady當服務器告訴客戶端不在準備好時,調用客戶端OnClientSceneChanged當場景已加載完成時,當場景加載由服務器啟動是,調用客戶端OnStartClient在客戶端啟動時調用的回調方法OnStarthost當主機啟動時調用的回調方法OnStartServer當客戶端啟動時調用的回調方法0nStopClient當客戶端停止時調用的回調方法OnStophost當主機停止時調用的回調方法OnStopServer當客戶端停止時調用的回調方法表11-1 網絡管理器的部分成員方法第3頁11.1.1NetworkManager網絡管理器游戲狀態(tài)管理網絡多人游戲可以以三種模式運行——作為客戶端、作為專用服務器、或者作為同時作為客戶端和服務器的“主機”。無論游戲開始于客戶端、服務器還是主機,都要設置使用網絡地址和網絡端口,如圖11-2所示在客戶端模式下,游戲嘗試連接到指定的地址和端口。在服務器或主機模式下,游戲監(jiān)聽指定端口上的傳入連接。如果您使用的是網絡管理器HUD,它會根據播放器選擇的選項自動告訴網絡管理器從哪個模式開始。網絡管理器HUD將在下文介紹。圖11-2網絡管理器設置地址和端口第4頁11.1.1NetworkManager網絡管理器2.派生管理使用網絡管理器來管理來自預制件的網絡游戲對象的子對象(網絡實例化)。大多數(shù)游戲都有一個代表玩家的預置,所以網絡管理器有一個玩家預置槽。用播放器預置這個插槽。有一個玩家預置集時,玩家GameObject會自動從游戲中的每個用戶產生。這適用于托管服務器上的本地播放器和遠程客戶端上的遠程播放器。必須將網絡身份組件附加到播放器預置。一旦分配了一個玩家預置,即可以開始游戲作為一個主機,并看到玩家游戲對象產生子對象。停止游戲破壞球員GameObject。如果構建并運行游戲的另一個副本,并將其作為客戶機連接到本地主機,則網絡管理器將顯示另一個玩家GameObject。當停止那個客戶端時,它就破壞了玩家的游戲對象。第5頁11.1.1NetworkManager網絡管理器3.場景管理大多數(shù)游戲都有不止一個場景。至少,除了實際玩游戲的場景之外,通常還有標題屏幕或開始菜單場景。網絡管理器被設計成以適用于多人游戲的方式自動管理場景狀態(tài)和場景轉換的功能。當服務器或主機啟動時,加載在線場景,連接到該服務器的任何客戶端都被指示也加載該場景。此場景的名稱存儲在網絡場景名稱屬性中。當網絡停止時,通過停止服務器或主機或客戶端斷開連接,加載離線場景。這使得游戲可以在從多人游戲中斷開時自動返回到菜單場景。當網絡場景管理處于活動狀態(tài)時,任何對游戲狀態(tài)管理函數(shù)(如NetworkManager.Starthost()或NetworkManager.StopClient())的調用都會導致場景更改。通過設置場景并調用這些方法,開發(fā)人員可以控制多人游戲的流程。需要注意的是場景更改會導致前一個場景中的所有生成出的游戲對象被銷毀。第6頁11.1.1NetworkManager網絡管理器4.起始位置若要控制在何處生成玩家游戲對象,可以使用NetworkStartPosition組件。要使用這些,請將NetworkStartPosition組件附加到場景中的游戲對象上,并將游戲對象定位到理想的起始位置。也可以在場景中添加任意多個起始位置。NetworkManager會檢測到場景中的所有開始位置,當它生成每個玩家游戲對象實例時,NetworkManager便會使用其中一個實例的位置和方向。5.調試管理Unity提供在運行時獲取有關游戲的信息的工具。這個信息對于測試多人游戲是極為重要的的。當游戲運行在編輯器中的播放模式時,網絡管理器在運行時顯示有關網絡狀態(tài)的附加信息。這包括:網絡連接、活動游戲對象在具有網絡標識組件的服務器上、具有網絡標識組件的客戶端上的活動游戲對象、客戶端對等體。第7頁

11.1.2NetworkManagerHUD

11.1.2NetworkManagerHUD網絡管理器HUD是一個快速啟動工具來幫助開始建立多人游戲直線距離,而不必首先建立游戲創(chuàng)作/連接/連接的用戶界面。它可以直接跳轉至游戲編程,這就意味著可以在隨后的開發(fā)計劃建立自己的這些控件的版本。下面的是網絡管理器HUD組件的界面,如圖11-3所示。圖11-3網絡管理器HUD設置界面第8頁

11.1.2NetworkManagerHUD

方法名說明ShowRuntimeGUI勾選這個選項來顯示網絡管理器HUD界面在運行時。這使您可以顯示或隱藏其快速調試GUIHorizontalOffset設置水平像素HUD的偏移,從屏幕的左邊緣測量。GUIVerticalOffset設置垂直像素HUD的偏移,從屏幕的頂部邊緣測量。表11-2 網絡管理器HUD的屬性及功能網絡管理器HUD有兩種基本模式:LAN(局域網)模式和紅娘模式。這些模式匹配兩種常見類型的多人游戲。LAN模式是用于創(chuàng)建或加入托管的局域網上的游戲(即,連接到同一網絡的多個計算機),和紅娘模式是用于創(chuàng)建,查找和通過網絡連接的游戲第9頁

11.1.3NetworkIdentity網絡身份標識

11.1.3NetworkIdentity網絡身份標識NetworkIdenity是多人聯(lián)網系統(tǒng)的高級API。它掛載到游戲對象上成為該對象在多人網絡中的唯一標識。NetworkIdenity標識使聯(lián)網系統(tǒng)能更快的找到游戲對象,方便其實例化此對象。玩家游戲對象必須擁有一個NetworkInstanceId組件才能掛載NetworkManager上。下面是NetworkIdenity組件的界面,如圖11-4所示。圖11-4NetworkIdenity組件界面第10頁

11.1.3NetworkIdentity網絡身份標識

方法名說明ServerOnly

勾選此復選框確保只在服務器上產生游戲對象而不是在客戶端上。

LocalPlayerAuthority勾選此復選框,將此游戲對象的控制權限授予擁有它的客戶端。表11-3 NetworkIdenity的屬性及功能掛載有NetworkIdenity組件的游戲對象在運行時能看到一個預覽窗口,這個預覽窗口顯示了例如場景ID、資源ID等網絡跟蹤信息來方便開發(fā)人員調試,如圖11-5所示。預覽窗口中的部分屬性信息含義如表11-4所列。第11頁

11.1.4NetworkTransform聯(lián)網變換組件

11.1.4NetworkTransform聯(lián)網變換組件如果想通過網絡對物體的運動、旋轉等操作進行同步,就要用到NetworkTransform組件了。需要注意的是,NetworkTransform組件只能同步被生產成出來的游戲對象。NetworkTransform組件的界面如圖11-6所示,界面中的屬性含義如表11-5所列。圖11-5NetworkTransform界面第12頁

11.1.4NetworkTransform聯(lián)網變換組件

屬性含義屬性含義NetworkSendRate設置網絡每秒的更新速率TransformSyncMode選擇該對象的同步方式SyncNone不進行同步SyncTransform根據Transform組件進行同步SyncRigidbody2D根據Rigidbody2D組件同步SyncRigidbody3D根據Rigidbody3D組件同步SyncCharacterController根據角色控制器同步MovementThreshold設置對象在不更新同步下可以移動的距離SnapThreshold設置閾值,更新移動超過閾值時對象將不再平穩(wěn)運動InterpolateMovementFactor使用它來啟用和控制內插同步運動RotationAxis定義哪個旋轉軸或哪個軸應該同步SyncAngularVelocity勾選此復選框以同步附加剛體部件的角速度。表11-4 NetworkTransform的部分屬性及含義第13頁

11.1.5NetworkBehavior類

11.1.5NetworkBehavior類MultiplayerNetworking系統(tǒng)中,所有包含網絡功能的腳本都需要繼承一個基類,那就是NetworkBehavior類。NetworkBehavior是一個MonoBehaviour類,所以需要使用聯(lián)網功能時應該繼承這個類而不是MonoBehaviour。它允許開發(fā)人員調用網絡操作,接收各種回調,并從服務器到客戶端自動同步狀態(tài)。掛載繼承NetworkBehaviour類的腳本需要游戲對象上的NetworkIdty組件。在一個游戲對象上可以有多個繼承NetworkBehaviour類的腳本。第14頁

11.1.6多人高層API及架構

11.1.6多人高層API及架構統(tǒng)一的多人高層API(HLAPI)是一種用于構建多人能力的統(tǒng)一游戲系統(tǒng)。它是建立在較低的水平之上傳輸實時通信層,并處理了許多所必需的多人游戲的共同任務。而在傳輸層支持任何類型的網絡拓撲結構中,HLAPI是一個服務器系統(tǒng)權威;雖然它允許參與者之一是客戶端,并在同一時間內服務器,因此不需要專用服務器進程。與協(xié)同工作的互聯(lián)網服務,這允許多人游戲中播放通過互聯(lián)網與開發(fā)商很少的工作。HLAPI是在一個新的命名空間內構建成Unity的一組新的網絡命令:UniTyeEngulink。它的重點是易用性和迭代開發(fā),并提供對多人游戲有用的服務,例如:消息處理程序、通用高性能串行化、分布式對象管理、狀態(tài)同步、網絡類的服務器、客戶端、連接等。第15頁

11.2UnityNetwork開發(fā)案例

11.2.1場景搭建(1)首先創(chuàng)建一個工程項目,并命名為“BNUNetwork”。將資源包的資源目錄下第11章的“BNUNetwork”工程文件下的“Model”導入進項目文件夾下,然后將預制件“terrain”拖曳進場景中,并調整位置和大小。(2)單擊GameObject→CreateEmpty創(chuàng)建一個空的GameObject對象,將其重命名為“NetworkManager”。并為“NetworkManager”添加“NetworkManager”組件和NetworkManagerHUD”組件,如圖11-8所示。(3)然后單擊Assets→Model→CharacterWarrior→Prefab,,將“CharacterWarrior”預制件拖入到場景中。點擊“AddComponent”為其添加“NetworkIdentity”“NetworkTransform”以及角色碰撞器“CharacterController”三種組件,如圖11-9所示。(4)在“Assets”下創(chuàng)建一個叫“player”的預制件,然后把“CharacterWarrior”預制件拖曳到新創(chuàng)建的預制件中,并將原來拖入場景中的“CharacterWarrior”刪除。(5)導入“Easytouch”插件,并添加虛擬搖桿按鈕。按步驟HedgehogTeam→EasyTouch→Extensions→Addingjoysticks向游戲對象目錄中添加虛擬搖桿按鈕。第16頁

11.2UnityNetwork開發(fā)案例

圖11-8圖11-9第17頁

11.2UnityNetwork開發(fā)案例

11.2.2腳本開發(fā)(1)新建一個名為“Script”的文件夾,然后在該文件夾中新建一個

C#腳本,并命名為“PlayerMove”。然后雙擊腳本,開始代

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論