Unreal Engine 4 c++ replication

From IML Wiki
Jump to: navigation, search

Репликация переменных

  • Сначала нужно убедится, что включена репликация глобально в самом экторе. В экторе она по-умолчанию выключена, а в павне по-умолчанию включена. Делается это в конструкторе.
bReplicates = true;
  • В заголовочном файле объявляется переменная с параметром "Replicated"
public:
	UPROPERTY(Replicated)
	int [названиеВашейПеременной];
  • В файле реализации создается следующий метод.
#include "Net/UnrealNetwork.h"

void [названиеВшегоКласса]::GetLifetimeReplicatedProps( TArray< FLifetimeProperty > & OutLifetimeProps ) const
{
    Super::GetLifetimeReplicatedProps(OutLifetimeProps);
    DOREPLIFETIME( [названиеВшегоКласса], [названиеВашейПеременной] );
    /* DOREPLIFETIME_CONDITION( [названиеВшегоКласса], [названиеВашейПеременной], COND_OwnerOnly ); // такой макрос идентичен предыдущему, но позволяет задавать параметры репликации
    https://docs.unrealengine.com/en-US/Gameplay/Networking/Actors/Properties/Conditions/index.html */
}

Репликация методов

  • В первую очередь нужно объявить метод в заголовочном файле. Параметры могу быть разные: Reliable или Unreliable, Server, Client или NetMulticast. Обо всех параметрах можно узнать нажав F12 на макросе UFUNCTION в Visual Studio
UFUNCTION( Reliable, Server, WithValidation )
	void YourFunctionName();
  • В отличии от обычной реализации методов в .cpp файле, при репликации нужно создать два метода [названиеВашейФункции]_Validate и [названиеВашейФункции]_Implementation.
bool [названиеВшегоКласса]::YourFunctionName_Validate()
{
	return true; // тут вы можете выполнить проверку на корректность входящих параметров
}
void [названиеВшегоКласса]::YourFunctionName_Implementation()
{
	// тело вашего метода
}