问题描述
我创建了 CPP UObject 类,以使其可复制。 我在教程中找到了代码,但它是在旧版本的 UE4 上编写的,我认为这可能是它不起作用的原因。 我有这个标题:
import os
path = r'C:\Users\PacY\Documents'
FileList = []
extensions = ['.pdf','.docx','.jpg']
for FileList in os.listdir(path):
print("\nFiles: ",FileList)
还有这个 CPP 文件:
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "Replicatedobject.generated.h"
UCLASS(Blueprintable)
class GOGOCPP_API UReplicatedobject : public UObject
{
GENERATED_BODY()
public:
UReplicatedobject();
virtual bool IsSupportedForNetworking() const override { return true; };
void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
};
但是 Visual Studio 大纲 #include "Replicatedobject.h"
#include "Net/UnrealNetwork.h"
UReplicatedobject::UReplicatedobject()
{
bReplicates = true;
}
和编译写我 bReplication 没有定义
我正在使用 UE4.26,我很有趣,是我的代码有问题,还是 UE4.26 削减了在 UObject 中使用 bReplicates 的能力,而它在此类中确实未定义?
解决方法
第一个复制类是AActor。要复制 UObject,它需要有一个所有者 (AActor),并且必须实现以下功能:
virtual void GetLifetimeReplicatedProps(TArray< FLifetimeProperty > & OutLifetimeProps) const override;
virtual bool IsSupportedForNetworking() const override { return true; }
virtual bool ReplicateSubobjects(class UActorChannel *Channel,class FOutBunch *Bunch,FReplicationFlags *RepFlags) override;