Unreal Engine 4 c++ replication
From IML Wiki
Репликация переменных
- Сначала нужно убедится, что включена репликация глобально в самом экторе. В экторе она по-умолчанию выключена, а в павне по-умолчанию включена. Делается это в конструкторе.
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()
{
// тело вашего метода
}