【UE4 C++】Enum to FString/TEXT/FName

Enum->FNameUEnum::GetValueAsName(YourEnum)
Enum->FStringUEnum::GetValueAsString(YourEnum)
Enum->TEXTUEnum::GetDisplayValueAsText(YourEnum)

### 在Unreal Engine蓝图中创建和使用结构体的方法 在Unreal Engine中,结构体(Struct)是一种非常强大的工具,可以用来组织和管理复杂的数据类型。通过C++或蓝图编辑器,用户可以定义自定义的结构体,并在蓝图中进行使用。以下是关于如何在蓝图中定义和使用结构体的具体方法。 #### 1. 使用C++定义结构体并暴露给蓝图 如果需要更复杂的逻辑或者性能优化,可以通过C++定义结构体,并将其暴露给蓝图使用。以下是一个示例代码: ```cpp // 定义一个结构体并添加BlueprintType宏以允许蓝图使用 USTRUCT(BlueprintType) struct FMantraPlayerInfo { GENERATED_USTRUCT_BODY() // 使用UPROPERTY修饰符来控制蓝图中的访问权限 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Mantra") FName Name = FName(""); UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Mantra") float Height = 0; }; ``` 上述代码中,`USTRUCT(BlueprintType)` 和 `UPROPERTY()` 的使用使得该结构体可以在蓝图中直接操作[^1]。 #### 2. 在蓝图中创建和修改结构体变量 一旦结构体被定义并暴露给蓝图,就可以在蓝图编辑器中轻松地创建和使用它。以下是具体步骤: - **创建结构体变量**:在蓝图中,可以通过“添加变量”选项创建一个新的结构体变量。选择之前定义的结构体类型作为变量类型。 - **设置结构体值**:可以通过右键菜单输入“Make [结构体名称]”来生成一个临时的结构体变量,并使用其节点来设置各个字段的值[^2]。 - **修改结构体值**:在事件图表中,可以从结构体变量拖出引脚,选择“Set”菜单项,从而动态地修改结构体内部字段的值。 #### 3. 使用UMETA定制蓝图中的显示效果 如果希望结构体在蓝图中具有更好的可读性和用户体验,可以利用 `UMETA()` 宏来自定义字段的显示名称或其他属性。例如: ```cpp UENUM(BlueprintType) enum class EWorkStyle : uint8 { Cooker UMETA(DisplayName = "Cook"), Driver = 3 UMETA(DisplayName = "Drive"), Teacher, Student, Runner, Jumpper, Dancer }; ``` 通过 `UMETA(DisplayName = "XXX")`,可以为枚举值指定蓝图中的显示名称[^3]。 #### 4. 蓝图中的结构体应用实例 假设有一个名为 `FMyStruct` 的结构体,包含两个字段 `float Value` 和 `FString Text`。在蓝图中: - 可以通过“Make FMyStruct”节点创建一个临时的结构体实例。 - 可以通过“Break FMyStruct”节点将结构体分解为其组成部分。 - 可以通过“Set”节点动态更新结构体字段的值。 这些操作使得结构体在蓝图中的使用变得直观且高效[^2]。 ### 示例代码块 以下是一个完整的C++结构体定义示例,展示了如何将结构体暴露给蓝图: ```cpp USTRUCT(BlueprintType) struct FCustomData { GENERATED_USTRUCT_BODY() UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Custom") int32 Number = 0; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Custom") FString Description = ""; }; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值