• NetworkView是Unity封装的一套快速实现多人联机游戏的功能。以此为基础,我们可以开发各种类型的多人游戏,可以开发过关游戏的双人联机,也可以开发类似于CS的射击游戏,以房间为单位。
  • 属性


    1.isMine : Network View 是否是由本机创建的。


    2.observed:指定被观察及同步的组件或者脚本。


    3.stateSynchronization:Network View的类型。OFF为没有数据将被同步,ReliableDeltaCompressed


     为当前数据发生变化时才发送,Unreliable为强制发送数据。


    4.viewID:NetworkViewID类型的ID。


  • 函数


    1.RPC(Remote Procedure Call,远程过程调用)。在Network系统中可以理解为向其他机器发送消息,如果


      有同名函数将被调用。


    2.networkView.RPC(string funName,RPCMode mode,params object[] args);参数funName为函数


     名,参数mode指定发送的范围,可选范围包括全部连接的机器包括本机,例如,All是发送给所有机器,


     Server是发送给服务器。args是传递的参数,可传可不传,支持类型包括int,float, string,   


     NetworkPlayer,NetworkViewID,Vector3,Quaternion,不支持List集合。


    3.只要有Network View,那么任何游戏对象上的脚本的函数体前用[RPC]标注,就可以通过RPC来通知调


     用,但是函数名必须是唯一的,否则其中只有一个会被调用。


  • 聊天室:要想达到信息共享,在有客户端加入时要清除所有用户(包括客服端与服务器)之前的数据,并在客户端与服务器端都要重新加载(使用Unity自带函数)。(比如需要记录每个进入聊天室人的姓名,当某个人退出时,删除他的名字,某个人进来时,记录他的名字,并将之前的已经进入的人的名字发送给这个人。这一系列操作只需通过服务器来实现,当客户端连接时,namesInfoDictionary添加信息并发送给所有客户端,客户端断开时,移除信息并发送给所有客户端。)

下面是制作过程:

本文做的只是一个简单的Demo,用来参考。。。一个简单的场景,场景里全部都是UI,demo里只有一个脚本名为mychat,没有其他了。具体如下:

新建场景,新建一些UI并命名如下(这些名字都可以在代码里找到,关键是代码)

Unity之NetworkView聊天室功能_RPC

然后在Canvas上绑定自己写的脚本mychat和network view组件,如下

Unity之NetworkView聊天室功能_RPC_02

 

重点是脚本,mychat的全部脚本如下:

这样就可以了。

打包开始测试:

打开exe后进入,看到如下画面:此处我用箭头标注了一下每个UI的作用。

Unity之NetworkView聊天室功能_Text_03

之后填写上用户名,然后点击场景server进行创建服务器。

再启动一个exe,输入用户名然后点击连接服务器,之后就输入内容点击button发送聊天消息了。如下:

Unity之NetworkView聊天室功能_Text_04

 

本文参考网上一篇文章进行了整理,并非原创,找不到原文链接了,如有用到可以参考研究。