📅  最后修改于: 2023-12-03 15:35:31.802000             🧑  作者: Mango
在C++中,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有几种不同的分类类型。其中包括:
BlueprintReadWrite
允许您在蓝图中读取和写入该参数的值。例如:
UPROPERTY(BlueprintReadWrite, Category = "MyClass")
int Number;
在这个例子中,Number
将显示在蓝图中,并且您可以在蓝图中读取和修改它的值。
BlueprintReadOnly
允许您在蓝图中读取该参数的值,但不允许修改。例如:
UPROPERTY(BlueprintReadOnly, Category = "MyClass")
int Number;
在这个例子中,Number
将显示在蓝图中,但只能读取它的值。
EditAnywhere
使该参数可在编辑器的属性框中更改。例如:
UPROPERTY(EditAnywhere, Category = "MyClass")
int Number;
在这个例子中,Number
将显示在编辑器的属性框中,因此您可以更改它的值。
EditDefaultsOnly
在编辑器中只允许对默认对象进行更改。例如:
UPROPERTY(EditDefaultsOnly, Category = "MyClass")
int Number;
在这个例子中,Number
将只在编辑器中对默认对象进行修改,而不能在蓝图中或其它地方进行修改。
UPARAM(ref)简化了调试和修改属性值的访问,特别是在编辑器中。它允许您在不更改代码的情况下修改属性值,因此是一个非常有用的标记。