目录
2.1 Default Pawn Class:棋子(玩家操控的对象)
2.3 Player Controller Class:操控Pawn的类
2.7 Game Instance:全局的游戏数据(Project Settings)
4. UE4反射用到的宏:UPROPERTY和UFUNCTION
EditInstanceOnly:可通过属性窗口进行编辑,但只能在实例上进行,不能在原型上进行
BlueprintCallable:此函数可在蓝图或管家蓝图图表中执行编辑
BlueprintPure:此函数不对拥有它的对象产生任何影响,可在蓝图或关卡蓝图中图表中执行
BlueprintImplementableEvent:需要在蓝图里面重载
CallInEditor:可通过细节(Detais)面板中的按钮在编辑器中的选定实例上调用此函数
7.0 FSTring与FText、FName、TCHAR*
7.2 FString、std::string、char* 转换
7.3 FString与int32、float、bool、转换
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 待补充
单播代理