【UE4】网游开发中的RPC和OnRep(三)
【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(三)相关推荐
- 【UE4】网游开发中的RPC和OnRep(二)
[UE4]网游开发中的RPC和OnRep(二) 本文转自我的公众号-游戏开发手账 转载请标明出处 搭配Multicast,让Server和所有的Client正常运转起来. 上篇遗留了什么问题? 上一篇 ...
- (转)火溶CEO王伟峰:Unity3D手机网游开发
今天看到这篇文章,感觉很不错,尤其是那句"Unity3D的坑我觉得最严重的坑就是没有懂3D的程序员,把Unity当成Office用". 转自http://blog.csdn.net ...
- 火溶CEO王伟峰:Unity3D手机网游开发
http://www.gamelook.com.cn/2013/11/135467 GameLook报道 / 11月2日下午,GameLook游戏开放日活动在上海正式举行,此次会议gamelook邀请 ...
- 手游开发中你需要了解的开发语言知识
如今手机游戏已经成为人们生活之中不可缺少的娱乐活动,手机游戏的种类也越来越多.对于手游发烧友来说,你是否了解手机游戏开发都是使用的事什么开发语言呢?下面我们就一起来看看手游开发中你需要了解的开发语言知 ...
- 网游服务器中的GUID(唯一标识码)实现-基于snowflake算法
本文中的算法采用twitter的snowflake算法,具体请搜索介绍,原来是用Scala写的,因我项目需要,改写成C++语言,主要用于高效的生成唯一的ID, 核心算法就是毫秒级时间(41位)+机器I ...
- c语言实现进程隐藏和保护,C/C++程序开发中实现信息隐藏的三种类型
无论是模块化设计,还是面向对象设计,还是分层设计,实现子系统内部信息的对外隐藏都是最关键的内在要求.以本人浅显的经验,把信息隐藏按照程度的不同分成(1)不可见不可用(2)可见不可用(3)可见可用. 1 ...
- Unity3D与AvosCloud网游开发实践 - 单线程U3D中的异步通讯处理
Unity3D被设计为单线程的结构,即在主线程之外绝大多数API都是无法使用的,而AvosCloud所有数据通讯都是异步的,这样就产生了一些问题. 举例来说,角色获得了足够的升级经验,于是向服务器发送 ...
- 网游开发的学习与杂绪
乘着头脑有点思绪,又没有时间进行整理, 赶紧把想到的一些个人见解记下: 1, 在网络编程里, 宜多用组合, 少用继承. 组合更适用于分解数据以在网络因时因地制宜的通讯. 2, 封装包含对数据的隐藏,但 ...
- (转)Unity3D研究院之手游开发中所有特殊的文件夹(assetbundle与Application.persistentDataPath)...
这里列举出手游开发中用到了所有特殊文件夹. 1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor 和 /Edi ...
最新文章
- mysql无法远程连接
- 《庆余年》值得一看吗?Python告诉你谁在关注 | CSDN原力计划
- python怎么打开交互式窗口-在交互式环境中执行Python程序过程详解
- error MSB8008: 指定的平台工具集(v110)未安装或无效。请确保选择受支持的 PlatformToolset 值...
- C语音的预处理,编译,汇编,链接过程分析
- mac 无法ssh localhost,错误提示:bash: /usr/local/bin/ssh_session: Permission denied
- 赏析 Singleflight 设计
- Kittle工具抽取文件出现乱码的情况解决方法
- [剑指offer]面试题8:旋转数组的最小数字
- 论文写作——texstudio+texlive
- 团伙(信息学奥赛一本通-T1385)
- oracle临时表空间自动清理,oracle清理临时表空间
- Intel_80386寄存器
- 视频主观质量评价方法总结
- 线性代数之矩阵逆的求法
- redisTemplate乱码问题
- c语言时间函数怎么用,C语言时间函数应用
- [附源码]java毕业设计病历管理系统
- 数学建模----拟合的实现
- Python猫眼电影最近上映的电影票房信息
热门文章
- unicloud普通云函数调用公共云函数的坑
- javascript和java哪个快_Javascript与Java相比有多快?
- 表情识别综述论文《Deep Facial Expression Recognition: A Survey》中文翻译
- Adobe学习记录:Dreamweaver软件入门
- 路由与接口技术——直连网络总结
- 解决页面中引用了谷歌字体库访问缓慢的问题
- 学php数学差能学会吗,初三数学差补习来得及吗
- SQL SERVER 2008 Enterprise Evaluation版本密钥
- MobaXterm学习与使用
- 喜报:冲量数据交易平台荣获2021中国软件技术大会创新产品奖