【Unity3D入门教程】网络通信
来源:互联网 发布:双重曝光软件下载 编辑:程序博客网 时间:2024/05/08 08:08
Unity之前都是使用RPC来进行网络通信的,后来在Unity5中有了UNET,使得开发多人在线网络游戏变得非常简单。本文将会介绍使用新网络模块开发游戏的方法。
首选创建一个空工程,保存场景名字为“Main”。创建一个空物体,并改名为“Network Manager”。给这个空物体添加组件NetworkManager和NetworkManagerHUD。
点击运行,效果如下。
创建一个Capsule,重命名为“Player”。创建一个Cube,作为Player的子物体,并且命名为Visor。将Visor的Scale设置为(0.95,0.25,0.5),位置设置为(0,0.5,0.24)。创建一个新的材质,命名为“Black”,然后选中该Material,将它的Albedo颜色设置为黑色,将Visor的Material设置为这个Black。此时,Player应该如下图所示。
选中Player,添加组件NetworkIdentity。并且将LocalPlayerAuthority选项设置为true。
将Player拖动到Project视图中创建一个Prefab,然后删除场景中的Player,保存场景。选中场景中的Network Manager,将Player Prefab拖动到它的NetworkManager组件的图示位置。
创建一个脚本PlayerController.cs,然后赋给PlayerPrefab,并将内容替换为如下:
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); }}
这个脚本允许用户控制Player。默认情况下,Input.GetAxis(“Horizontal”)和Input.GetAxis(“Vertical”)允许玩家使用WASD、方向键和控制板等来移动Player。保存脚本,返回到Unity。选中Player Prefab,为其添加组件NetworkTransform。目前的脚本还不能区分本地玩家和其他玩家,所以我们需要对PlayerController.cs进行一些修改。
加入命名空间UnityEngine.Networking,将继承的类改为NetworkBehaviour。在Update函数中增加本地玩家判断:
if(!isLocalPlayer){ return;}
为了从外观上区分本地玩家和其他玩家,可以在PlayerController类中加入下面函数:
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。生成并运行该程序,然后以服务器模式运行。同时,在unity内部以调试模式运行,作为客户端。两个程序都可以用WASD控制Player运动。结果如下:
- 【Unity3D入门教程】网络通信
- unity3D网络入门教程
- Unity3D 网络通信_HTTP
- java入门教程:网络通信例子(一)
- java入门教程:网络通信例子(二)
- Unity3D开发之Http协议网络通信
- Unity3D HTTP协议 网络通信 post get
- Unity3D 网络通信_HTTP协议:获取网络图片、内容
- Unity3D 网络通信_HTTP协议:获取网络图片、内容
- Unity3D 网络通信_HTTP协议:获取网络图片、内容
- Unity3D 网络通信_HTTP协议:获取网络图片、内容
- Unity3D 网络通信_HTTP协议:获取网络图片、内容
- Unity3D 网络通信_HTTP协议:获取网络图片、内容
- Unity3D 网络通信_HTTP协议:获取网络图片、内容
- U3D 网络库实现通信 基于Warensoft Unity3d
- Android入门教程 fragment通信
- 【Unity3D入门教程】Unity3D之GUI浅析
- 【Unity3D入门教程】Unity3D播放音频和视频
- hive 用户分享给其他用户的做法
- postgresql连接到schema
- OpenCL 相关资源
- 学习廖雪峰老师的课程笔记(二)
- 洛谷3389 高斯消元法
- 【Unity3D入门教程】网络通信
- node.js 报错 Error: write EPIPE 问题解决!
- AndroidStudio 编译C/C++文件生成SO文件
- input\textarea剩余字符数提示(jQuery)
- 数字矩阵
- 使用Storm实现实时大数据分析
- Android ActivityManager常用方法
- 变量和字符串
- 字符串比较最佳方式