注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Faye Euler's blog

技術交流歡迎留言

 
 
 

日志

 
 

[Unity3D] 自圓其說的網路連線教學  

2012-12-27 09:36:13|  分类: Unity3D |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

對於non-authoritative server,要同步多個物件的方法有state synchonize(狀態同步)和RPC。
本次介紹的方法為state synchronize

那麼state synchonize 要怎麼用呢?
先從最簡單的case說起,假設我們遊戲現在只有移動的功能,
那麼需要同步的參數,就只有tranform的position和rotation。

所謂狀態同步,是指client會不停地將狀態(此例狀態僅有pos和rot)傳送給server,server再將此狀態傳給其他client。(預設每秒傳送15次,可在project setting->Network內修改)
如此的書信往返,就能達到所有client和server上物件的狀態都是相同的。


那麼要如何實做這項神奇的功能呢?
首先,需要同步的物件(先取名叫PlayerPrefab)必須加上NetworkView這個component。
加上NetworkView的物件就好比手機裝上3G sim卡,從此便能盡情地和網路溝通。
其中State Synchronize的參數選擇Reliable Delta Compressed

然後,我們需要一個script專門處理所要傳送及接收的參數。
先將他取名為NetworkTransformSync,並將它拖放至NetworkView的Observed參數。
接下來就是在NetworkTransformSync中描述狀態的傳遞規則。

這邊最重要的函數就是OnSerializeNetworkView(),當你精通這個函數的用法,等於是學會State Synchronize這項技術了。

之前提過物件會不停傳送狀態資訊給server,這個動作稱為Serialize(發包),OnSerializeNetworkView()顧名思義就是每發包一次call一下(預設每秒15下)。由於這實在太難了,關於OnSerializeNetworkView()的教學將另以專文說明。
  评论这张
 
阅读(1487)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017