天天看點

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;
	}
           

繼續閱讀