UAC2015W120607SourceUAC2015W120607章节.pptxVIP

  • 1
  • 0
  • 约2.76千字
  • 约 18页
  • 2017-11-27 发布于广东
  • 举报
第06-07课 网络进阶进阶 —远程过程调用细节课程名称 Lesson Title网络进阶阶段—远程过程调用细节学习者等级 Learner Level 专业阶段模块 Module 网络进阶阶段本课时长 Duration 135分钟 学习者背景 Learner Background 本课程要求学习者了解Network view组件的功能,及远程过程调用 (RPC)的基本含义。 教学目标 Objectives 本课的目标是让学生如何使用远程过程调用(RPC),实现网络数据的传送,理 解RPC缓存的相关知识。 ?掌握如何实现远程过程调用。 ?掌握RPC缓存相关内容。主题 Topics 远程过程调用简介 远程过程调用应用 RPC缓冲Animator组件远程过程调用简介远程过程调用 (RPC) 是调用远程计算机上的函数。RPC 调用有非常多的参数,但涉及的网络带宽会随着参数的数量和大小而增大。为获得最佳性能,应该将参数保持在最小值。通常用 RPC 调用执行游戏内所有客户端上的事件或在特定双方之间传递事件信息。服务器可向特定客户端发送 RPC 以便在连接后立即初始化。RPC用法:远程调用函数前必须将该函数标记为 RPC。通过使用 RPC 属性为脚本中的函数添加前缀来完成操作:[RPC]void PrintText(string text){ print (text );}参数:可以使用以下变量类型作为 RPC 的参数:intfloatstringNetworkPlayerNetworkViewIDVector3四元数例如:调用使用单个 string 型参数的 RPC 函数networkView.RPC (“PrintText”, RPCMode.All,“Hello world”);RPC() 的第一个参数是待调用函数的名称。第二个参数决定调用目标;在这种情况下,我们对连接到服务器的每个客户端执行 RPC 调用。从第三个开始算起的所有参数都传递到 RPC 函数而且通过网络发送。在这种情况下,“Hello World”会作为一个参数发送并作为 PrintText 函数中的文本参数传递。同时还可以访问其他内部参数,NetworkMessageInfo结构保留附加信息,例如:RPC调用来自哪里。此信息自动传递,因此上文显示的 PrintText 函数可声明为:[RPC]void PrintText (String text , NetworkMessageInfo info ){ print(text + from + info.sender);}主题 Topics 远程过程调用简介 远程过程调用应用 RPC缓冲客户端1服务器端客户端2点击此按钮服务器端编程:public GUIText text_Server; void OnGUI() { if (GUI.Button(new Rect (30, 20, 100, 50),CreatServer)) { Network .InitializeServer(100,2014,false); } } void OnServerInitialized() { text_Server.text =Server initialized!; }客户端编程: public GUIText text_Client; public GUIText text_Msg; string ipAddress=127.0.0.1; void ConnectServer() { Network.Connect (ipAddress,2014); } void OnConnectedToServer() { text_Client.text =Successfully Connected to server !; } [RPC] void SendMessage(string str) { text_Msg.text = str; }客户端编程: void OnGUI() { if (GUI.Button (new Rect (30, 100, 100, 50), ConnectServer)) { ConnectServer (); } if (GUI.Button (new Rect (30, 180, 100, 50), SendAll)) { networkView.RPC (SendMessage,RPCMode.All,Send All); } if (GUI.Button (new Rect (150, 180, 100, 50), SendServer)) { networkView.RPC (SendMessage,RPCMode.Server,Send Server); } if (

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档