я смогу вызывать делегаты определённого типа чисто на клиенте. Однако получаю ошибку в header файле.
UFUNCTION(Client, Unreliable)
void Client_InvokeDelegate(FOnShieldChangedSignature& Delegate, float NewParam);
error : Unrecognized type 'FOnShieldChangedSignature' - type must be a UCLASS, USTRUCT or UENUM
На answerhub было несколько советов, типа включить в cpp файл declaration делегата, но инклюд не помог. Что делать?
По идее, если делать инклюд в cpp, то в сигнатуре метода должно быть class FOnShieldChangedSignature&
И в хедере, и в цпп?
Ладно, уже сделал, но ошибка осталась той же
Вообще лучше даже сделать по-другому в данном случае. После инклудов в хедере сделать forward declaration написав class FOnShieldChangedSignature; а сигнатуру метода оставить как есть, инклуд делать в cpp, либо просто инклуд в хедере
с хедера не могу убрать, т.к. есть и другие типы, которые мне нужны. Ошибка всё ещё та же(
Так убирать с хедера и не нужно ничего
в любом случае, как бы я не игрался с хедерами, ошибка оставалась той же
Делегаты не реплицируются
Можно обойти это так: 1. забайндить делегат на клиенте 2. передать параметры для делегата через rpc 3. вызвать делегат на клиенте
Да я так и делал, но тогда для каждого делегата нужно rpc, так что пока dry
Обсуждают сегодня