一、Network介绍:
UnityEngine.Network是实现网络功能的核心之一,它提供了基本的功能函数。例如建立服务器和加入服务器等。一般应用于局域网,但是在一些游戏中互联网也有用到。
常用函数介绍:
OnPlayerConnected(NetworkPlayer player);
当玩家连接到服务器时,在服务器端调用此函数。
OnPlayerDisconnected(NetworkPlayer player);
当玩家断开连接的时候,在服务器端调用此函数。
OnConnectedToServer();
当连接到服务器时,玩家调用此函数。
OnDisconnectedFromServer(NetworkDisconnection info);
在服务器上当连接已经断开,在客户端调用这个函数,但当连接已经被禁用,也在服务器上调用。
二、Network View 组件。
它是unity封装的一套快速实现多人联机游戏的功能,以此为基础,我们可以开发各种类型的多人游戏,可以开发过关游戏的双人联机,也可以开发类似于CS的射击游戏,以房间为单位。
属性:
* isMine : Network View 是否是由本机创建的。
* observed:指定被观察及同步的组件或者脚本。
* stateSynchronization: Network View的类型。OFF为没有数据将被同步,ReliableDeltaCompressed为当前数据发生变化时才发送,Unreliable为强制发送数据。
* viewID: NetworkViewID类型的ID。
函数:
* RPC(Remote Procedure Call,远程过程调用)。在Network系统中可以理解为向其他机器发送消息,如果有通名 函数将被调用。
* networkView.RPC(string funName,RPCMode mode,params object[] args);
* 参数funName为函数名,参数mode指定发送的范围,可选范围包括全部连接的机器包括本机,例如,All是发送给所有机器,Server是发送给服务器。
* args是传递的参数,可传可不传,支持类型包括int,float,string,NetworkPlayer,NetworkViewID,Vector3,Quaternion.
* 只要有Network View,那么任何游戏对象上的脚本的函数体前用[RPC]标注,就可以通过RPC来通知调用,但是函数名必须是唯一的,否则其中只有一个会被调用。
语法格式:
[RPC]
void funName
{
代码块...
}
实例演示:
1.在unity中创建简易UI界面。
2.代码如下:
完成之后将项目进行简单的打包发布,然后进行测试,在unity中运行程序,点击创建服务器按钮,然后再开启两个发布好的程序点击连接服务器按钮,发送消息。
演示效果:
服务器端:
两个客户端:
此时我们就简单的实现了三个程序间的互相发送消息。