使用網絡的一些前置條件
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;
}