UE4 C++ 中创建枚举 结构体 在蓝图中使用的流程
Posted gaofei7439
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4 C++ 中创建枚举 结构体 在蓝图中使用的流程相关的知识,希望对你有一定的参考价值。
目录
UE4的头文件XXX.generated.h" 找不到文件。
1,背景
UE4 4.27
VS 2022
使用背景: 我们在日常开发中,有一种情况是:我们的枚举在C++ 中定义比较方便。比如:我们的UE4 平台和其他的平台进行通讯时。
涉及到传输数据的类型 。比如很多 设备的种类、仪表的界面种类、操作种类等等。 这些信息可能要和外部平台进行数据交互。
在C++ 中定义好枚举 和结构体就会很合适。
2,C++ 中创建枚举、结构体的方法
(1)之前我一直有个疑问, 这个枚举应该创建在 什么样基类的C++ 里面。 后来经过测试发现。基本上创建在任意基类类型的 C++ 里面均可以。
(2)我自己 使用了 Actor 基类 和 primary 基类 创建,在其中创建枚举, 都可以在蓝图中正常调用。
primary 基类
UENUM(BlueprintType)
enum class EWorkStyle : uint8 // EWorkStyle 这个地方名字前面加上了E ,就算删除,蓝图中我没看到什么影响
Cooker, //第一项默认对应的byte 都是0 ,这个是必须的。 不允许人为设置成非0 的其他数值。
Driver = 3 UMETA(DisplayName = "God"), // UMETA() 中 可以设置成别名,就是在 蓝图中,会直接以另外一个名字呈现。同时 可以自定义 当前所对应的数值。比如当前是3, 这样后面对应的开始就是从4 开始。
Teacher,
Student,
Runner,
Jumpper,
Dancer
;
Actor 基类 中我们创建结构体
BaseActorStyle.h 中
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "BaseActorStyle.generated.h"
UENUM(BlueprintType)
enum class ECookerStyle1 : uint8
waterhot,
Coldwater,
warm,
hit,
jundle
;
USTRUCT(BlueprintType)
struct FCarInfo
GENERATED_BODY()
public:
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "thinker")
FString thinkerName;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "thinker")
int32 age;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "thinker")
TArray<ECookerStyle1> CookerStylearray;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "thinker")
TMap<ECookerStyle1,int32> CookerStyleMap;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "thinker")
TMap<FString, int32> CookerStyleStagestringmap;
;
3,蓝图中的表现
(1)枚举的表现
4,结构体的使用
结构体 在蓝图中使用。主要体现在两个方面
(1)在任意蓝图内定义 结构图 可以直接使用此 结构体类型。
(2) 创建 数据资产 类型的C++ 类。 基类是 primaryDataAsset .
创建之后,可以直接在 蓝图中 创建数据资产 ,基类 直接使用 ParimaryDataAsset_Thinker 。
注意上面 这个C++ 文件 ,一定要在头文件里面 引用 所有定义数据类型的文件。
5,过程中出现的一些问题和解决方案
过程中: 我们 创建了 Actor 基类的C++ 文件, 在删除了 begin play 相关的文件之后, 突然给我报错了。
6,UE4的头文件XXX.generated.h" 找不到文件。
解决方案:
DebugGame Editor 然后生成(build)一下 后再改回 DevlopmentGame Editor就可以完美解决该问题。
好了,就这样!汪
ue4蓝图图片生成咋样赋予到模型上
参考技术A 在组件面板添加组件,创建你所需要的模型,并安装所需要的组件。导入时,导入对话框中将显示多个选项。第一个是3D几何体、布告板、或两者之间进行的选择。如果一棵树只用于近景,它即为一颗“英雄”树,否则将布告板设为最低的LOD时将出现问题(因为有时动态阴影会投射在平坦的布告板几何体上),可选择无视布告板网格体。如果一棵树只用于远景,需要减少3D几何体的加载,则可只将布告板导入。只导入布告板网格体还将创建一个静态网格体,可与UE4的植物图层一同使用。在导入对话框中还可选择3D树材质是否包含细节、高光、以及枝干缝隙混合。还可为材质添加顶点处理,将一个特殊的SpeedTree节点放入材质中,处理风吹、布告板、以及树上其他按每个顶点计算的效果。最后可将SpeedTree建模器中设置的碰撞基元导入新建SpeedTree网格体上的碰撞信息。
以上是关于UE4 C++ 中创建枚举 结构体 在蓝图中使用的流程的主要内容,如果未能解决你的问题,请参考以下文章