前言
记录UE开发中遇到的一些常见问题和一些经验
问题
1. GENERATED_UCLASS_BODY()与GENERATED_BODY()有什么区别
UE4 GamePlaye 框架 GENERATED_BODY() 与 GENERATED_UCLASS_BODY()
GENERATED_BODY() 与 GENERATED_UCLASS_BODY() 是GamePlay框架 GameMode 类下的宏
这两个宏都封装了构造函数相关的内容
VS2017后都直接使用 GENERATED_BODY()
之前的版本都是使用 GENERATED_UCLASS_BODY()
首先为什么有两个宏定义的区别,主要是考虑到,继承父类之后,在于是否需要对父类的东西有所改动,构造函数的初始化亦是如此。
区别:
GENERATED_BODY():
如果定义的是GENERATED_BODY(),那么意味着我不需要使用父类的构造函数,也就是说,我不能直接使用父类的声明,但是,我需要去实现的时候,我就必须自己去声明,否则就会报错,然后就可以在CPP中实现自己声明的这个构造函数。
总结:属于新版本的宏,不生成构造函数,如果需要自定义,需要自己声明并定义,之后成员是private。
GENERATED_UCLASS_BODY():
如果定义的是GENERATED_UCLASS_BODY(),那么意味着我使用父类的构造函数,也就是说,我不需要为自己声明构造函数,直接去实现父类声明那个构造函数,那么在CPP文件中去实现,而不需要在H里面去声明。
总结:属于之前版本的宏,自动生成带有指定参数的构造函数,不用用户再头文件中生明构造函数,需要在CPP中实现,否则报错,之后成员是public。
2. Build文件中的几种依赖引入的区别是什么?
PublicIncludePaths.AddRange(
new string[] {
// ... add public include paths required here ...
}
);
PrivateIncludePaths.AddRange(
new string[] {
// ... add other private include paths required here ...
}
);
PublicDependencyModuleNames.AddRange(
new string[]
{
"Core",
// ... add other public dependencies that you statically link with here ...
}
);
PrivateDependencyModuleNames.AddRange(
new string[]
{
"Projects",
"InputCore",
"EditorFramework",
"UnrealEd",
"ToolMenus",
"CoreUObject",
"Engine",
"Slate",
"SlateCore",
// ... add private dependencies that you statically link with here ...
}
);
DynamicallyLoadedModuleNames.AddRange(
new string[]
{
// ... add any modules that your module loads dynamically here ...
}
);
基础的有5种,
3. 蓝图中如何导表和读表
https://www.bilibili.com/video/BV114411D7Pj?p=3
4. UMG中的Image如何使用动态材质,并设置材质的一些参数?
首先使用动态材质和动画可以实现一些不错的效果
5.UE中可创建的插件模板有哪些,具体是干啥的?
一些经验和经历
注意VS提示的不一定是正确的
可能有的Vs在IntellSence里没有提示到,但是实际有这个方法或宏,不可完全相信VS的代码提示。
蓝图不支持uint否则编译不过,并且无法获取,如果数据结构中有,无法被break
蓝图中int6无法直接转为FString,需要转为int32,额外支持只能单独写方法
蓝图要输入换行符需要使用shift+Enter