UE4 C++ 笔记(二):基础知识

目录

 

1.UE4 C++工程目录

2.GamePlay框架(蓝图)

2.1 Default Pawn Class:棋子(玩家操控的对象)

2.2 HUD Class:UI界面管理器

2.3 Player Controller Class:操控Pawn的类

2.4 Game State Class:游戏状态类

2.5 Player State Class:玩家状态类

2.6 Spectator Class:旁观者类

2.7 Game Instance:全局的游戏数据(Project Settings)

3. UE4基本数据类型 

bool

uint8

int32

float

int64

FName

FString

FText

FVector

FVector2D

FRotator

FTransform

4. UE4反射用到的宏:UPROPERTY和UFUNCTION

4.1 UPROPERTY

EditAnywhere:在编辑中可见,且可编辑

EditDefaultOnly:只在类默认设置中可见

EditInstanceOnly:可通过属性窗口进行编辑,但只能在实例上进行,不能在原型上进行

VisibleAnywhere:在编辑中可见,且不可编辑

BlueprintReadOnly:蓝图中只读

BlueprintReadWrite:蓝图中可读可写

4.2 UFUNCTION

BlueprintCallable:此函数可在蓝图或管家蓝图图表中执行​编辑

BlueprintPure:此函数不对拥有它的对象产生任何影响,可在蓝图或关卡蓝图中图表中执行

BlueprintImplementableEvent:需要在蓝图里面重载

BlueprintNativeEvent:此函数旨在被蓝图覆盖掉,但是也具有默认原生实现,用于声明名声与主函数相同的附加函数。但是末尾添加了“Implementation”,是写入代码的位置,如果未找到任何蓝图覆盖,该自动生成的代码将调用Implementation方法

CallInEditor:可通过细节(Detais)面板中的按钮在编辑器中的选定实例上调用此函数

5. UE4枚举&结构体

6.UE4 Actor

6.1 什么是Actor

6.2 什么是Component

⭐6.3 浅析什么是UObject

6.3.1 反射

6.3.2 垃圾回收GC

6.3.3 序列化

6.3.4 COD

6.4 AActor生命周期浅析

6.5 UE4代理(待更新)

7. UE4常用类型转换

7.0 FSTring与FText、FName、TCHAR*

7.1 FString与FName转换

7.2 FString、std::string、char* 转换

7.3 FString与int32、float、bool、转换

7.4 FString与TArray

7.5 枚举与FString


1.UE4 C++工程目录

Binaries:UE编译好的二进制文件

Config:工程配置文件

Content:资源,.uasset/.umap

DerivedDataCache:缓存文件,一般不用管

Intermediate:编译C++产生的中间文件

Saved:UE自动保存的记录文件

Source:源代码

.uproject:json格式文件,UE项目文件,可以用记事本打开查看并更改

2.GamePlay框架(蓝图)

在UE中体现为Game Mode(游戏模式):

2.1 Default Pawn Class:棋子(玩家操控的对象)

比如第一人称射击游戏,Pawn就是操控的人物(此时应为Character,继承自Pawn);又比如塔防游戏,或者策略类游戏,这时Pawn就是一个个单位。

2.2 HUD Class:UI界面管理器

比如吃鸡游戏,在大厅界面时,上面的一些商城、装备等UI标签

2.3 Player Controller Class:操控Pawn的类

这个很好理解,Pawn于Controller,就好比棋子于棋手

2.4 Game State Class:游戏状态类

比如游戏排行榜,当前游戏人数等等

2.5 Player State Class:玩家状态类

比如玩家血量,蓝量,攻击力等等状态

2.6 Spectator Class:旁观者类

很好理解,比如LOL的观战模式

2.7 Game Instance:全局的游戏数据(Project Settings)

一个单例模式对象,从游戏开始到结束

3. UE4基本数据类型 

bool

uint8

int32

float

int64

FName

  • 大小:12bytes 
  • 不区分大小写
  • 不可变,无法被操作
  • 静态存储特性,决定了通过键值进行FName的查找速度较快
  • FName子系统的另一个功能是使用散列表为FName转换提供快速字符串

FString

  • 大小:12 Bytes
  • 与FName和FText不同,FString可以进行搜索、修改并且与其他字符串进行比较
  • FString对象保存自己的字符数组,而FName和FText对象保存共享字符数组的指针,并且可以完全根据索引值建立相等性
  • 重载了很多std::string的API

FText

  • 大小:24 Bytes
  • 一般用于显示和文本本地化,提供不同语言的转化

FVector

  • 点乘、叉乘、各种变换

FVector2D

  • 二维Vector

FRotator

  • UE是左手坐标系:拇指X,食指Y,中指Z(中指向上摆放)
  • X:Roll翻滚角
  • Y:Pitch俯仰角
  • Z:Yaw偏航角

 【转】UE4中坐标系定义【UE4和Unity均为左手坐标系】【UE4中的Pitch/Roll/Yaw】_于杰1996的博客-CSDN博客_ue4 左手坐标系

动图:

1.俯仰:(Pitch)

2.翻滚:(Roll)

3.偏航:(Yaw)

FTransform

4. UE4反射用到的宏:UPROPERTY和UFUNCTION

C++是没有反射机制的,所以UE实现了一个反射机制。

UHT工具会扫描每个头文件中的 "xxxxxx.generated.h",并根据UCLASS()和GENERATED_BODY()生成一套反射机制。

4.1 UPROPERTY

Unreal Engine UProperty Specifiers | 虚幻引擎5.0文档

EditAnywhere:在编辑中可见,且可编辑

 

EditDefaultOnly:只在类默认设置中可见

EditInstanceOnly:可通过属性窗口进行编辑,但只能在实例上进行,不能在原型上进行

VisibleAnywhere:在编辑中可见,且不可编辑

BlueprintReadOnly:蓝图中只读

BlueprintReadWrite:蓝图中可读可写

 

4.2 UFUNCTION

BlueprintCallable:此函数可在蓝图或管家蓝图图表中执行

BlueprintPure:此函数不对拥有它的对象产生任何影响,可在蓝图或关卡蓝图中图表中执行

BlueprintImplementableEvent:需要在蓝图里面重载

BlueprintNativeEvent:此函数旨在被蓝图覆盖掉,但是也具有默认原生实现,用于声明名声与主函数相同的附加函数。但是末尾添加了“Implementation”,是写入代码的位置,如果未找到任何蓝图覆盖,该自动生成的代码将调用Implementation方法

必须要在C++里有实现体

CallInEditor:可通过细节(Detais)面板中的按钮在编辑器中的选定实例上调用此函数

5. UE4枚举&结构体

UENUM()反射宏

 

6.UE4 Actor

6.1 什么是Actor

6.2 什么是Component

⭐6.3 浅析什么是UObject

6.3.1 反射

就比如在C++写的变量或者方法,在蓝图中可以看到并应用。

6.3.2 垃圾回收GC

大型系统难以用new/delete单个去管理内存。

 将出栈的对象标记为垃圾,在下一次循环中将标记为垃圾的对象回收。

6.3.3 序列化

  • 序列化:把内存里的东西放到磁盘的过程叫做序列化
  • 反序列化:把磁盘里的东西读取到内存的过程叫做反序列化

6.3.4 COD

类默认对象:只序列化修改的部分

6.4 AActor生命周期浅析

Unreal Engine Actor Lifecycle | 虚幻引擎5.0文档

 

6.5 UE4代理(待更新)

#TODO 待补充

单播代理

7. UE4常用类型转换

7.0 FSTring与FText、FName、TCHAR*

7.1 FString与FName转换

7.2 FString、std::string、char* 转换

7.3 FString与int32、float、bool、转换

7.4 FString与TArray

7.5 枚举与FString

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值