📜  UPARAM(ref) - C++ (1)

📅  最后修改于: 2023-12-03 15:35:31.802000             🧑  作者: Mango

UPARAM(ref) - C++

在C++中,UPARAM(ref)是一种宏定义,它用于指示引擎在编辑器中显示一个参数并允许您在运行时修改该参数的值。

使用UPARAM(ref)

当您使用UPARAM(ref)定义一个参数时,它将显示在编辑器的某个属性界面上。这使得程序员可以在不更改代码的情况下更改该参数的值。例如,假设您有一个类MyClass,其中包含以下函数:

UFUNCTION(BlueprintCallable, Category = "MyClass")
void SetNumber(UPARAM(ref) int& Num);

在这个例子中,UPARAM(ref)告诉引擎,此函数的参数Num需要显示在编辑器中,并且您希望它具有传递by reference的属性。

要在代码中读取这个参数,只需像这样接收它的引用:

void MyClass::SetNumber(UPARAM(ref) int& Num)
{
    int MyNum = Num;
}
UPARAM分类

使用UPARAM有几种不同的分类类型。其中包括:

BlueprintReadWrite

BlueprintReadWrite允许您在蓝图中读取和写入该参数的值。例如:

UPROPERTY(BlueprintReadWrite, Category = "MyClass")
int Number;

在这个例子中,Number将显示在蓝图中,并且您可以在蓝图中读取和修改它的值。

BlueprintReadOnly

BlueprintReadOnly允许您在蓝图中读取该参数的值,但不允许修改。例如:

UPROPERTY(BlueprintReadOnly, Category = "MyClass")
int Number;

在这个例子中,Number将显示在蓝图中,但只能读取它的值。

EditAnywhere

EditAnywhere使该参数可在编辑器的属性框中更改。例如:

UPROPERTY(EditAnywhere, Category = "MyClass")
int Number;

在这个例子中,Number将显示在编辑器的属性框中,因此您可以更改它的值。

EditDefaultsOnly

EditDefaultsOnly在编辑器中只允许对默认对象进行更改。例如:

UPROPERTY(EditDefaultsOnly, Category = "MyClass")
int Number;

在这个例子中,Number将只在编辑器中对默认对象进行修改,而不能在蓝图中或其它地方进行修改。

结论

UPARAM(ref)简化了调试和修改属性值的访问,特别是在编辑器中。它允许您在不更改代码的情况下修改属性值,因此是一个非常有用的标记。