UE4 网络学习笔记

使用网络的一些前置条件

1,要 #include “Net/UnrealNetwork.h”
3, 要复制的Actor的bReplicates要设置为true,否则不会复制

属性复制

1, 当要对Actor的某个属性进行网络同步(从服务器复制到客户端)是要在属性的URPOPERTY()中添加Replicated 说明符。
同时需要实现GetLifetimeReplicatedProps函数,不然编译不会通过,在函数中使用DOREPLIFETIME()宏进行注册属性同步规则。
Actor的bReplicates 要设置为True.

Controller和Pawn的联系

1, 在Pawn的Pawn::PostInitializeComponents() 是Controller是为nullptr.
要进行一些有Controller之后的设置可以在 Pawn::PawnClientRestart() 方法里进行设置,
在网络中,这个方法由PlayerController调用RPC函数Controller::ClientRestart(APawn);
最后在Controller::ClientRestart_Implementation(APawn* NewPawn) 中设置Controller和调用Pawn::PawnClientRestart();

RPC

1,安全校验

如果RPC函数的说明符中添加了(WithValidation)那么我们就可以添加一个安全校验函数,该函数要以_Validation结尾如下:
bool AShooterCharacter::ServerSetRunning_Validate(bool bInRunning, bool bInToggle)
可以在这个方法里面添加对参数的校验如果,参数有问题返回false就会断开这个连接

该校验是在被调用端进行,gen.cpp中有如下定义

DEFINE_FUNCTION(AShooterCharacter::execServerSetRunning)
	{
		P_GET_UBOOL(Z_Param_bInRunning);
		P_GET_UBOOL(Z_Param_bInToggle);
		P_FINISH;
		P_NATIVE_BEGIN;
		if (!P_THIS->ServerSetRunning_Validate(Z_Param_bInRunning,Z_Param_bInToggle))
		{
			RPC_ValidateFailed(TEXT("ServerSetRunning_Validate"));
			return;
		}
		P_THIS->ServerSetRunning_Implementation(Z_Param_bInRunning,Z_Param_bInToggle);
		P_NATIVE_END;
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值