【UE4】网游开发中的RPC和OnRep(三)

本文转自我的公众号—游戏开发手账
转载请标明出处

最后说说怎么用OnRep完成子弹的同步。

OnRep

使用属性同步也能够完成Client和Server的同步,仍是以之前的Fire功能为例。

Multicast相关部分可以全注释掉了,在头文件声明要同步的属性Fired和要调用的函数OnRep_OnFire()

UPROPERTY(ReplicatedUsing = OnRep_OnFire)
uint8 Fired;UFUNCTION()
void OnRep_OnFire();

这里的ReplicatedUsing可以这样简单理解:Server的Fired值变化时,Client中会触发函数OnRep_OnFire(),但是在Server需要手动调用OnRep_OnFire()

在cpp中进行OnRep_OnFire()的实现,并进行属性的条件复制:

void AMultiplayerCharacter::OnRep_OnFire()
{/*生成投射物*//*开枪的动画*//*生成声音*//*...*/
}void AMultiplayerCharacter::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{Super::GetLifetimeReplicatedProps(OutLifetimeProps);/*将Fired属性进行条件复制,COND_SkipOwner枚举值表示忽略Shooter本身,防止产生两枚子弹*/DOREPLIFETIME_CONDITION(AMultiplayerCharacter, Fired, COND_SkipOwner);
}

接下来为了清晰展示调用逻辑,对比一下上一篇使用Multicast的调用顺序图:

将原来的Multicast部分去掉,看看逻辑图变成什么样子:

把Multicast部分一顿删,就介样儿了

【UE4】网游开发中的RPC和OnRep(三)相关推荐

  1. 【UE4】网游开发中的RPC和OnRep(二)

    [UE4]网游开发中的RPC和OnRep(二) 本文转自我的公众号-游戏开发手账 转载请标明出处 搭配Multicast,让Server和所有的Client正常运转起来. 上篇遗留了什么问题? 上一篇 ...

  2. (转)火溶CEO王伟峰:Unity3D手机网游开发

    今天看到这篇文章,感觉很不错,尤其是那句"Unity3D的坑我觉得最严重的坑就是没有懂3D的程序员,把Unity当成Office用". 转自http://blog.csdn.net ...

  3. 火溶CEO王伟峰:Unity3D手机网游开发

    http://www.gamelook.com.cn/2013/11/135467 GameLook报道 / 11月2日下午,GameLook游戏开放日活动在上海正式举行,此次会议gamelook邀请 ...

  4. 手游开发中你需要了解的开发语言知识

    如今手机游戏已经成为人们生活之中不可缺少的娱乐活动,手机游戏的种类也越来越多.对于手游发烧友来说,你是否了解手机游戏开发都是使用的事什么开发语言呢?下面我们就一起来看看手游开发中你需要了解的开发语言知 ...

  5. 网游服务器中的GUID(唯一标识码)实现-基于snowflake算法

    本文中的算法采用twitter的snowflake算法,具体请搜索介绍,原来是用Scala写的,因我项目需要,改写成C++语言,主要用于高效的生成唯一的ID, 核心算法就是毫秒级时间(41位)+机器I ...

  6. c语言实现进程隐藏和保护,C/C++程序开发中实现信息隐藏的三种类型

    无论是模块化设计,还是面向对象设计,还是分层设计,实现子系统内部信息的对外隐藏都是最关键的内在要求.以本人浅显的经验,把信息隐藏按照程度的不同分成(1)不可见不可用(2)可见不可用(3)可见可用. 1 ...

  7. Unity3D与AvosCloud网游开发实践 - 单线程U3D中的异步通讯处理

    Unity3D被设计为单线程的结构,即在主线程之外绝大多数API都是无法使用的,而AvosCloud所有数据通讯都是异步的,这样就产生了一些问题. 举例来说,角色获得了足够的升级经验,于是向服务器发送 ...

  8. 网游开发的学习与杂绪

    乘着头脑有点思绪,又没有时间进行整理, 赶紧把想到的一些个人见解记下: 1, 在网络编程里, 宜多用组合, 少用继承. 组合更适用于分解数据以在网络因时因地制宜的通讯. 2, 封装包含对数据的隐藏,但 ...

  9. (转)Unity3D研究院之手游开发中所有特殊的文件夹(assetbundle与Application.persistentDataPath)...

    这里列举出手游开发中用到了所有特殊文件夹. 1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor  和 /Edi ...

最新文章

  1. mysql无法远程连接
  2. 《庆余年》值得一看吗?Python告诉你谁在关注 | CSDN原力计划
  3. python怎么打开交互式窗口-在交互式环境中执行Python程序过程详解
  4. error MSB8008: 指定的平台工具集(v110)未安装或无效。请确保选择受支持的 PlatformToolset 值...
  5. C语音的预处理,编译,汇编,链接过程分析
  6. mac 无法ssh localhost,错误提示:bash: /usr/local/bin/ssh_session: Permission denied
  7. 赏析 Singleflight 设计
  8. Kittle工具抽取文件出现乱码的情况解决方法
  9. [剑指offer]面试题8:旋转数组的最小数字
  10. 论文写作——texstudio+texlive
  11. 团伙(信息学奥赛一本通-T1385)
  12. oracle临时表空间自动清理,oracle清理临时表空间
  13. Intel_80386寄存器
  14. 视频主观质量评价方法总结
  15. 线性代数之矩阵逆的求法
  16. redisTemplate乱码问题
  17. c语言时间函数怎么用,C语言时间函数应用
  18. [附源码]java毕业设计病历管理系统
  19. 数学建模----拟合的实现
  20. Python猫眼电影最近上映的电影票房信息

热门文章

  1. unicloud普通云函数调用公共云函数的坑
  2. javascript和java哪个快_Javascript与Java相比有多快?
  3. 表情识别综述论文《Deep Facial Expression Recognition: A Survey》中文翻译
  4. Adobe学习记录:Dreamweaver软件入门
  5. 路由与接口技术——直连网络总结
  6. 解决页面中引用了谷歌字体库访问缓慢的问题
  7. 学php数学差能学会吗,初三数学差补习来得及吗
  8. SQL SERVER 2008 Enterprise Evaluation版本密钥
  9. MobaXterm学习与使用
  10. 喜报:冲量数据交易平台荣获2021中国软件技术大会创新产品奖