【Unity3D入门教程】网络通信
Unity之前都是使用RPC來進(jìn)行網(wǎng)絡(luò)通信的,后來在Unity5中有了UNET,使得開發(fā)多人在線網(wǎng)絡(luò)游戲變得非常簡單。本文將會(huì)介紹使用新網(wǎng)絡(luò)模塊開發(fā)游戲的方法。?
首選創(chuàng)建一個(gè)空工程,保存場景名字為“Main”。創(chuàng)建一個(gè)空物體,并改名為“Network Manager”。給這個(gè)空物體添加組件NetworkManager和NetworkManagerHUD。
點(diǎn)擊運(yùn)行,效果如下。
創(chuàng)建一個(gè)Capsule,重命名為“Player”。創(chuàng)建一個(gè)Cube,作為Player的子物體,并且命名為Visor。將Visor的Scale設(shè)置為(0.95,0.25,0.5),位置設(shè)置為(0,0.5,0.24)。創(chuàng)建一個(gè)新的材質(zhì),命名為“Black”,然后選中該Material,將它的Albedo顏色設(shè)置為黑色,將Visor的Material設(shè)置為這個(gè)Black。此時(shí),Player應(yīng)該如下圖所示。
選中Player,添加組件NetworkIdentity。并且將LocalPlayerAuthority選項(xiàng)設(shè)置為true。
將Player拖動(dòng)到Project視圖中創(chuàng)建一個(gè)Prefab,然后刪除場景中的Player,保存場景。選中場景中的Network Manager,將Player Prefab拖動(dòng)到它的NetworkManager組件的圖示位置。
創(chuàng)建一個(gè)腳本PlayerController.cs,然后賦給PlayerPrefab,并將內(nèi)容替換為如下:
using UnityEngine;public class PlayerController : MonoBehaviour {void Update(){var x = Input.GetAxis("Horizontal") * Time.deltaTime * 150.0f;var z = Input.GetAxis("Vertical") * Time.deltaTime * 3.0f;transform.Rotate(0, x, 0);transform.Translate(0, 0, z);} }這個(gè)腳本允許用戶控制Player。默認(rèn)情況下,Input.GetAxis(“Horizontal”)和Input.GetAxis(“Vertical”)允許玩家使用WASD、方向鍵和控制板等來移動(dòng)Player。保存腳本,返回到Unity。選中Player Prefab,為其添加組件NetworkTransform。目前的腳本還不能區(qū)分本地玩家和其他玩家,所以我們需要對(duì)PlayerController.cs進(jìn)行一些修改。
加入命名空間UnityEngine.Networking,將繼承的類改為NetworkBehaviour。在Update函數(shù)中增加本地玩家判斷:
if(!isLocalPlayer) {return; }為了從外觀上區(qū)分本地玩家和其他玩家,可以在PlayerController類中加入下面函數(shù):
public override voidOnStartLocalPlayer() {GetComponent<MeshRenderer>().material.color = Color.blue; }最終的腳本如下:
using UnityEngine; using UnityEngine.Networking;public class PlayerController : NetworkBehaviour {void Update(){if (!isLocalPlayer){return;}var x = Input.GetAxis("Horizontal") * Time.deltaTime * 150.0f;var z = Input.GetAxis("Vertical") * Time.deltaTime * 3.0f;transform.Rotate(0, x, 0);transform.Translate(0, 0, z);}public override void OnStartLocalPlayer(){GetComponent<MeshRenderer>().material.color = Color.blue;} }保存腳本,返回Unity。生成并運(yùn)行該程序,然后以服務(wù)器模式運(yùn)行。同時(shí),在unity內(nèi)部以調(diào)試模式運(yùn)行,作為客戶端。兩個(gè)程序都可以用WASD控制Player運(yùn)動(dòng)。結(jié)果如下:
總結(jié)
以上是生活随笔為你收集整理的【Unity3D入门教程】网络通信的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux(RedHat9.0)下Als
- 下一篇: LiveWallPaper 动态壁纸程