Calmer的文章

  • 首页
  • 文章归档
  • 关于页面

  • 搜索
体验游戏 笔记 推荐 工具链 工具使用 小游戏 插件 UI 软件 教程

UE4的一些疑问

发表于 2022-01-17 | 分类于 随笔 | 0 | 阅读次数 1133

前言

记录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. 蓝图中如何导表和读表

image.png

https://www.bilibili.com/video/BV114411D7Pj?p=3

4. UMG中的Image如何使用动态材质,并设置材质的一些参数?

首先使用动态材质和动画可以实现一些不错的效果
image.png

image.png

5.UE中可创建的插件模板有哪些,具体是干啥的?

image.png


一些经验和经历

注意VS提示的不一定是正确的

可能有的Vs在IntellSence里没有提示到,但是实际有这个方法或宏,不可完全相信VS的代码提示。

蓝图不支持uint否则编译不过,并且无法获取,如果数据结构中有,无法被break

蓝图中int6无法直接转为FString,需要转为int32,额外支持只能单独写方法
蓝图要输入换行符需要使用shift+Enter

  • 本文作者: Calmer
  • 本文链接: https://mytechplayer.com/archives/ue4的一些疑问
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
# 笔记
UE4/5中编辑器和命令的扩展
UE5中资源热更新和Lua热更新方案(UnLua)
  • 文章目录
  • 站点概览
Calmer

Calmer

88 日志
7 分类
10 标签
RSS
Creative Commons
0%
© 2020 — 2025 Calmer
由 Halo 强力驱动
蜀ICP备20010026号-1川公网安备51019002006543
Copyright © 2020-2025 Calmer的文章