位置: 编程技术 - 正文

Unity网络多玩家游戏开发教程第1章Unity自带网络功能(unity connected games)

编辑:rootadmin
Unity网络 多玩家游戏开发教程第 1 章 Unity 自带网络功能

推荐整理分享Unity网络多玩家游戏开发教程第1章Unity自带网络功能(unity connected games),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity多人网络游戏,unity开发联网游戏,unity开发联网游戏,unity多平台,unitymmorpg大型网络游戏教程,unity多平台,unity多人联网,unity局域网多人游戏,内容如对您有帮助,希望把文章链接给更多的朋友!

Unity 拥有大量的第三方插件,专门提供了对网络功能的支持。但是,大部分开发者第一次接触到的还是 Unity 自带的网络功能,也就是大家经常说到的 Unity Networking API 。这些 API 是借助于组件 NetworkView 发挥作用的,而它可以简化开发者大量的网络功能编码任务。本文选自《 Unity网络 多玩家游戏开发教程(大学霸内部资料)》

NetworkView 组件

在 Unity 中, NetworkView 组件用于处理游戏在网络上的数据传输,通常负责具体的游戏对象的状态数据串行化( state serialization )。例如,将游戏对象上 Transform 、 Rigidbody 和 Animation 组件的数据串行化到网络上。本文选自 《 Unity网络 多玩家游戏开发教程(大学霸内部资料)》

为游戏对象添加 NetworkView 组件的方法是,单击 Component|Miscellaneous|Network View 命令,此组件如图 1- 所示。本文选自 《 Unity网络 多玩家游戏开发教程(大学霸内部资料)》

提示:此组件被添加到了游戏场景中默认创建的对象 Main Camera 上。

State Synchronization :表示要同步(串行化)的状态信息;本文选自 《 Unity网络 多玩家游戏开发教程(大学霸内部资料)》

提示:此属性有 3 个可选项。 Off 表示不需要同步任何状态; Reliable Delta Compressed 表示使用可靠的数据传输方式,且只传输变化了的数据,若没有变化,那么就不会传输任何数据; Unreliable 表示要使用不可靠的数据传输方式,每次都传输同类型的数据,即时数据没有发生变化(需要占用更大的带宽)。

q Observed :表示要同步的信息的类型;

提示:示例中要同步的信息的类型是 Transform 组件上的数据。

q ID :唯一的标识特定对象上的 Network view 组件;

提示:多人网络游戏中,同一对象的此 ID &#;是一致的。

自定义串行化数据

上一节讲解了使用 NetworkView 组件指定串行化数据的方法,例如数据类型是 Transform 组件上的数据,就要为 NetworkView 组件上的 Observed 属性指定为特定对象上的 Transform 组件。而本节就来说明在脚本中自定义串行化数据的方法,数据的类型同样是 Transform 组件上的数据。本文选自 《 Unity网络 多玩家游戏开发教程(大学霸内部资料)》

在 Project 视图里,新建 C# 脚本,命名为 ExampleUnityNetworkSerializePosition,并添加下面的代码:

using UnityEngine;

using System.Collections;

public class ExampleUnityNetworkSerializePosition : MonoBehaviour

{

public void OnSerializeNetworkView( BitStream stream, NetworkMessageInfo info )

{

// 判断当前是否打算向网络上写入数据

if( stream.isWriting )

{

// 写入对象的位置信息

Vector3 position = transform.position;

stream.Serialize( ref position );

}

// 当前正在从网络上读取数据

else

{

// 将读取到的数据存储到 Vector3 类型的变量中

Vector3 position = Vector3.zero;

stream.Serialize( ref position );

Unity网络多玩家游戏开发教程第1章Unity自带网络功能(unity connected games)

// 实时修改对象的位置

transform.position = position;

}

}

}

q 脚本 行, OnSerializeNetworkView() 方法会被 Unity 主动调用,用于串行化自定义的数据;

BitStream 类表示串行化的数据,它有两个变量 IsReading 和 IsWriting ,分别用于判断当前处于读取,还是写入状态;本文选自 《 Unity网络 多玩家游戏开发教程(大学霸内部资料)》

q BitStream 类依据当前的读取,或者写入状态,调用自己的 Serialize() 方法从流中读取数据,或者写入数据到流中;

使用远程过程调用

远程过程调用( RPC , Remote Procedure Calls )的作用是,为了达到多人游戏的同步效果,调用远程机器上,特定对象上的方法。例如,玩家自己的角色在当前的机器上发射了子弹,那么处于同一游戏中的其它玩家,也应该在它们的机器上,看到那个角色发射了子弹。本节就来说明在脚本中使用远程过程调用的方法。本文选自 《Unity网络 多玩家游戏开发教程(大学霸内部资料)》

在 Project 视图里,新建 C# 脚本,命名为 ExampleUnityNetworkCallRPC ,并添加下面的代码:本文选自 《 Unity网络 多玩家游戏开发教程(大学霸内部资料)》

using UnityEngine;

using System.Collections;

public class ExampleUnityNetworkCallRPC : MonoBehaviour

{

void Update()

{

// 如果此 NetworkView 组件不属于此对象,就不做任何反应

if( !networkView.isMine )

return;

// 当按下空&#;键的时候,调用所有同一游戏中,同一对象上的 testRPC 方法

if( Input.GetKeyDown( KeyCode.Space ) )

networkView.RPC( "testRPC", RPCMode.All );

}

[RPC]

void testRPC( NetworkMessageInfo info )

{

// 记录调用此方法的电脑所在的 IP 地址

Debug.Log( "Test RPC called from " &#; info.sender.ipAddress );

}

}

q 远程过程调用就是使用 networkView.RPC() 方法,第一个参数表示要远程调用的方法名,第二个参数表示接收远程调用的主机;

q 脚本 行的属性标记是必不可少的;

提示: networkView.RPC() 方法的第二个参数,有 5 个可选项,如图 1- 所示,分别表示只发送给服务器、除发送者以外的所有主机、除发送者以外的所有主机并添加到缓存、所有主机,以及所有主机并添加到缓存。

Unity3d数学公式之线段相交 这一篇写一下线段相交的代码在2d游戏中可能会经常使用到需要的朋友拿走吧publicstaticboolIsSegmentIntersectionWithSegment(refVector2segment0Start,refVector2segment0End,refV

<Unity3D>Unity3D GUI控件 三、TextField控件TextField控件主要用于监听用户的输入信息,我们通常使用GUI.TextField()方法来显示输入框,其返回类型为string型。Parameters(参数):position:Re

U3D中的多线程 usingUnityEngine;usingSystem.Collections;usingSystem.Threading;publicclassMyThread{publicintcount;stringthrdName;publicMyThread(stringnam){count=0;thrdName=nam;}publicvoidrun(){Debug.Log("startrunathr

标签: unity connected games

本文链接地址:https://www.jiuchutong.com/biancheng/369276.html 转载请保留说明!

上一篇:Unity3D HTTP协议 网络通信 post get

下一篇:Unity3d数学公式之线段相交(unity 3d数学)

  • 外国驻华使领馆自用车辆
  • 经营成本是营业成本还是营业总成本
  • 新增社保工资填多少好
  • 政府返还的增值税怎么算
  • 公司出售固定资产
  • 非盈利组织是两套账吗?
  • 金税盘维护费全额抵扣冲减的管理费用怎样结转
  • 合同租金总收入怎么填
  • 发票加盖公章有用吗
  • 非货币性资产投资印花税
  • 个体工商户生产经营所得怎么申报
  • 会计差旅费属于什么会计科目
  • 税收缴款书税务收现专用的用途
  • 外贸企业购买生产车辆
  • 保安公司增值服务
  • 企业购买理财产品收益会计分录
  • 公司销售二手车怎么做账
  • 评估资产没有发票和流水怎么办
  • 预提费用和应付利息一样吗
  • 库存现金出现负数怎么跟客户沟通
  • 高新企业认定 研发委外费用
  • 华为折叠手机mateXs3
  • 资本公积和盈余公积都是从企业的净利润中提取的
  • 冲减预交的增值税税率
  • linux的ip查看
  • 怎么做合同
  • beservice是什么进程
  • 不需要支付的应付款情况说明
  • 月末结转本年利润吗
  • mkfs.ext4 命令 对磁盘设备进行Ext4格式化
  • php哪本书最好
  • 非居民纳税人183天新税法
  • 劳动仲裁支付的赔偿金怎么入账
  • 汇算清缴时期间费用是负数
  • sqlserver2008还原数据库 错误3624
  • 资产报废的原因及情况说明
  • 税务异常有哪些影响
  • 挂靠到运输公司的车转让给个人如何交增值税
  • 建筑设备租赁如何交税
  • 采购原材料凭证是什么
  • 民办非注销原因如何写
  • 营改增一般纳税人简易征收的范围
  • mysql数据库命名 可以用-吗
  • mysql和mongo的区别
  • 商家的这些行为对消费者的购买行为有什么影响
  • 幼儿园园服已发给孩子怎么通知家长
  • 金税四期能监控到公户吗
  • 增值税减免税申报表
  • 买房的社保指的是什么
  • 另一种收到企业信息英文
  • 职工福利费支出不超过工资薪金总额的
  • 小规模企业应交税费二级科目
  • 现金日记账定金怎么算
  • 附加税的计税依据是增值税实际缴纳税款吗
  • 商场联营扣点缴纳增值税税率
  • 发票超过密码区一点点
  • 出口退税勾选后电子税务局查不到发票
  • 其他应收款包括哪些会计科目
  • win7系统怎样
  • mongo 安装
  • centos7 cp
  • dvdrom是什么
  • win10如何查看系统日志
  • Mtdacq.exe - Mtdacq是什么进程 有什么用
  • win7开机chkdsk
  • windows中的hosts文件
  • Win7如何卸载dualmonitor
  • Windows 8 Modern Apps 网络隔离如何解除?
  • netfilter/iptables模块编译及应用
  • linux服务器dns怎么设置
  • win8页面
  • win8.1专业版怎么升级成win10
  • win10教育版登录
  • cocos2d安装
  • Unity3d中EventTrigger的封装
  • 深入理解计算机系统 电子书
  • node 微信公众号开发
  • jq easyui
  • div跟随滚动条移动
  • 烟台税务系统缴费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设