排列三彩吧助手走试图:网络视图

排列三2014079期正版藏机图 www.d0po.cn 2015-1-6 19:36| 发布者: 杨炎| 查看: 1459| 评论: 0|原作者: 蛮牛|来自: unity3d脚本manual

摘要: 网络视图网络视图 (network view)是 unity 中制作网络多人游戏的网关。网络视图使用起来很简单,但功能却非常强大。由于这个原因,我们建议在您开始使用网络视图 (network view) 功能之前先了解网络的基本概念。您可 ...

网络视图

网络视图 (network view)是 unity 中制作网络多人游戏的网关。网络视图使用起来很简单,但功能却非常强大。由于这个原因,我们建议在您开始使用网络视图 (network view) 功能之前先了解网络的基本概念。您可以在状态同步类型。

关闭 (off)

“状态同步”(state synchronization) 功能未使用。如果您只想发送rpcs,那这是最佳选择

可靠的差值压缩 (reliable delta compressed)

会发送前一个状态和当前状态之间的差值。如果没有任何更改,则不发送任何东西。这种模式是有序的。如果数据包丢失,会自动重新发送该数据包

不可靠 (unreliable)

将发送完整状态。这会使用更多的带宽,但数据包丢失造成的影响降到了最低

观察数据 (observed)

将在网络上发送的组件 (component)数据

视图 id (view id)

该“网络视图”(network view) 的唯一识别符。这些值在“检视器”(inspector) 中是只读的

场景 id (scene id)

网络视图”(network view)在该特定场景中的数字 id

类型 (type)

保存场景 (scene)或或在运行时分配 (allocated)

详细信息

当将“网络视图”(network view) 添加到“游戏对象”(gameobject) 时,您必须确定两样东西

需要“网络视图”(network view) 发送什么样的数据

需要如何发送该数据

选择要发送的数据

“网络视图”(network view) 的观察数据 (observed)属性可以包含单个组件 (component)。变换组件 (transform)、动画 (animation)、刚体 (rigidbody)或者脚本。无论观察数据 (observed)组件是什么,其相关数据都将通过网络发送。您可以从下拉菜单中选择一个组件 (component),或直接将任一组件 (component) 页眉拖到变量。如果不直接发送数据,只是使用 rpc 调用,那么可以关掉同步功能(没有直接发送的数据),并且不需要设置为“观察数据”(observed) 属性。rpc 调用只需有单独的网络视图,因此,如果已经有了一个视图,则不需要专门为 rpc 添加视图。

如何发送数据

发送观察数据 (observed)组件的数据有两种方式:状态同步 (state synchronization)远程过程调用 (remote procedure calls)。

要使用“状态同步”(state synchronization)功能,请将“网络视图”(network view) 的状态同步 (state synchronization) 设置为可靠的差值压缩 (reliable delta compressed)不可靠 (unreliable)。观察数据 (observed)组件的数据将立即通过网络自动发送。

可靠的差值压缩 (reliable delta compressed)是有序的。数据包总是按其发送顺序接收。如果某个数据包丢失,则会重新发送该数据包。在前一个数据包收到之前,该数据包之后的所有数据包都会排队等待发送。只发送前一传输值和当前值的差值。如果没有差值,则不发送任何数据。

如果是在观察脚本 (script),则必须在该脚本内明确序列化 (serialize) 数据。在onserializenetworkview()函数中进行此项操作。

function onserializenetworkview (stream : bitstream, info : networkmessageinfo) {

var horizontalinput : float = input.getaxis ("horizontal");

stream.serialize (horizontalinput);

}

当收到更新时,以上函数总是(将流的更新)写入水平输入 (horizontalinput),否则从写入流的变量读取。如果在接收或发送更新时想尝试不同的方式,可使用 bitstream 类别中的iswriting属性。

function onserializenetworkview (stream : bitstream, info : networkmessageinfo) {

var horizontalinput : float = 0.0;

if (stream.iswriting) {

// 正在发送

horizontalinput = input.getaxis ("horizontal");

stream.serialize (horizontalinput);

} else {

// 正在接收

stream.serialize (horizontalinput);

// ... 用接收到的变量做有意义的事

}

}

onserializenetworkview是根据网络管理器项目设置中指定的sendrate调用的。在默认情况下每秒调用 15 次。

如果想在脚本中使用“远程过程调用”(remote procedure calls),只需附加有脚本的同一个“游戏对象”(gameobject) 中有网络视图 (networkview) 组件?!巴缡油肌?networkview) 也可用于其他地方,如果只用于发送 rpc,则没有脚本观察,并且“状态同步”(state synchronization) 功能关闭。这个可以从网络调用的函数必须具有@rpc属性。现在,您可从附加到同一个“游戏对象”(gameobject) 的任何脚本调用networkview.rpc()来执行“远程过程调用”(remote procedure call)。

var playerbullet : gameobject;

function update () {

if (input.getbuttondown ("fire1")) {

networkview.rpc ("playerfire", rpcmode.all);

}

}

@rpc

function playerfire () {

instantiate (playerbullet, playerbullet.transform.position, playerbullet.transform.rotation);

}

rpc 得到了可靠传输并有序排列。有关 rpc 的更多详细信息,请参阅rpc 详细信息页面。

提示

如果您仍然不清楚如何使用“网络视图”(network views),请通读网络参考指南。

使用“远程过程调用”(remote procedure calls) 时不需要禁用“状态同步”(state synchronization)。

如果您有一个以上的“网络视图”(network view),并想调用某个特定网络视图上的 rpc,请使用getcomponents(networkview)[i].rpc()函数。

相关阅读

文章点评
相关文章
  • 您访问的页面找不回来了 2019-04-07
  • 五莲科技局以“三大”助力动能转换 2019-04-07
  • 匹夫有责之一百一十二—道义大义的博客—强国博客—人民网 2019-03-30
  • 守住青山不放松 护好绿水不辞难——在渝全国人大代表聚焦“共抓大保护、不搞大开发”专题调研记略 2019-03-28
  • 经营者要想“我心换你心”,就要未雨绸缪,让不诚信的诱惑少一点,如此才能在市场中生存下来。反过来说,承担不起亏损就关门歇业,是否也是一种不诚信呢? 2019-03-21
  • 追风上市公司“跌落神坛”-热门标签-华商网数码 2019-03-21
  • 文化艺术交易场所沙龙第一期活动在京顺利举行 2019-03-16
  • 看把你高兴的屁颠屁颠的,光有赞有什么用?我给你个货真价实的 [大红包]。 2019-03-16
  • 候选企业:中国石油呼和浩特石化公司 2019-02-22
  • 我国纳米核心技术取得重大突破 2019-02-22
  • 北京:端午节民俗地图  小枣粽——竹叶红枣糯糯情  2019-01-26
  • 机器人送快递将在西安试点 识别红绿灯还能“车让人” 2019-01-26
  • 首批限竞房正式入市 戳三大盘看详情! ——凤凰网房产北京 2018-12-09
  • 世界杯频爆冷门网友大呼“天台见”!警方:不要冲动,不要跳楼 2018-08-21
  • 始终如一的是:美国优先。 2018-08-21
  • 892| 935| 673| 752| 629| 592| 500| 209| 786| 200|