UE4 常见的宏UFUNCTION-函数说明符

2021-11-10 15:09:14 浏览数 (1)

函数说明符: BlueprintAuthorityOnly  如果在具有网络权限的计算机(服务器,专用服务器或单人游戏)上运行,此功能只能从Blueprint代码执行,如无网络权限,则该函数将不会从蓝图代码中执行

BlueprintCallable  该函数可以在蓝图或关卡蓝图图表中执行

代码语言:javascript复制
public: 
    UFUNCTION(BlueprintCallable, Category = "Snowing,BlueprintFunc")
        void BlueprintCallableFunction();

BlueprintCosmetic  此函数为修饰函数而且无法运行在专属服务器上

BlueprintGetter 修饰自定义的Getter函数专用【例子见UE4入门-常见的宏-UPROPERTY】  该函数将用作Blueprint暴露属性的访问器。这个说明符意味着BlueprintPure和BlueprintCallable

BlueprintSetter 修饰自定义的Setter函数专用【例子见UE4入门-常见的宏-UPROPERTY】  此函数将用作Blueprint暴露属性的增变器。这个说明符意味着BlueprintCallable

BlueprintImplementableEvent  此函数可以在蓝图或关卡蓝图图表内进行重载  不能修饰private级别的函数,函数在C 代码中不需要实现定义

代码语言:javascript复制
public:
    UFUNCTION(BlueprintImplementableEvent, meta = (DisplayName = "Blueprint Implementable Event Function"), Category = "Snowing|BlueprintFunc")
        float BlueprintImplementableEventFunction(float In_Float);

BlueprintInternalUseOnly  表示该函数不应该暴露给最终用户

BlueprintNativeEvent  此函数将由蓝图进行重载,但同时也包含native类的执行。提供一个名称为[FunctionName]_Implementation的函数本体而非[FunctionName];自动生成的代码将包含转换程序,此程序在需要时会调用实施方式

代码语言:javascript复制
// .h文件中的声明
public:
    UFUNCTION(BlueprintNativeEvent, meta = (DisplayName = "Blueprint Native Event Function"), Category = "Snowing|BlueprintFunc")
        FString BlueprintNativeEventFunction(AActor* In_AActor);

// .cpp中的定义
FString AActorTest::BlueprintNativeEventFunction_Implementation(AActor* In_AActor)
{
    return In_AActor->GetName();
}

BlueprintPure 该函数不会以任何方式影响拥有对象,并且可以在蓝图或级别蓝图图表中执行

代码语言:javascript复制
// .h文件中的声明
public:
    UFUNCTION(BlueprintPure, Category = "Snowing|BlueprintFunc")
        AActor* BlueprintPureFunction();

// .cpp中的定义
AActor* AActorTest::BlueprintPureFunction()
{
    return this;
}

CallInEditor 该函数可以在编辑器中通过详细信息面板中的按钮在选定实例中调用

Category = TopCategory|SubCategory|Etc  指定函数在编辑器中的显示分类层级,| 是分层级的符号

代码语言:javascript复制
UFUNCTION(BlueprintPure, Category = "Snowing|BlueprintFunc")
    AActor* BlueprintPureFunction();

Client  此函数仅在该函数从属对象所从属的客户端上执行。提供一个名称为[FunctionName]_Implementation的函数主体,而不是[FunctionName]; 自动生成的代码将包含一个转换程序来在需要时调用实现方法

CustomThunk  UnrealHeaderTool(虚幻头文件工具)的代码生成器将不会为此函数生成execFoo转换程序; 可由用户来提供

Exec  此函数可从游戏中的控制台中执行。Exec命令仅在特定类中声明时才产生作用  此标记修饰的函数应在可以接受输入的类中,才能正常接受命令

代码语言:javascript复制
//CharacterTest.h
UCLASS()
class UNREALCPPLEARN_API ACharacterTest : public ACharacter
{
GENERATED_BODY()

public:
// Sets default values for this character's properties
ACharacterTest();

protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;

public: 
// Called every frame
virtual void Tick(float DeltaTime) override;

// Called to bind functionality to input
virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;

UFUNCTION(Exec)
    void ExecFunction();

UPROPERTY()
    bool IsShow;
};

//CharacterTest.cpp
void ACharacterTest::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);
    if (IsShow)
    {
        FString  TempText = "What is this, WTF";
        if (GEngine)
        {
            GEngine->AddOnScreenDebugMessage(-1, 8.f, FColor::Red, TempText);
        }
        UE_LOG(LogTemp, Log, TEXT("This is ExecFunction------"));
    }
}

void ACharacterTest::ExecFunction()
{
    IsShow = !IsShow;
}

NetMilticast  无论角色的NetOwner如何,该函数都在服务器上本地执行并复制到所有客户端

Reliable / UnReliable  Reliable函数在网络间进行复制,并会忽略带宽或网络错误而被确保送达。仅在与客户端或服务器共同使用时可用  UnReliable函数在网络间复制,但可能会由于带宽限制或网络错误而传送失败。仅在与客户端或服务器一起使用时有效

SealeEvent  这个函数不能在子类中重写。 SealedEvent关键字只能用于事件。对于非事件函数,声明它们是static的还是final的来封闭它们

ServiceRequest / ServiceResponse  ServiceRequest函数是一个RPC服务请求  ServiceResponse函数是一个RPC服务响应

Server  此函数仅在服务器上执行。提供一个名称为[FunctionName]_Implementation的函数主体,而不是[FunctionName]; 自动生成的代码将包含一个转换程序来在需要时调用实现方法

WithValidation  声明一个名为与main函数相同的附加函数,但将_Validation添加到最后。该函数采用相同的参数,并返回一个布尔值来指示是否应该继续调用主函数

0 人点赞