日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Unity3D入门教程】网络通信

發(fā)布時(shí)間:2024/3/26 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Unity3D入门教程】网络通信 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。