UE 入坑系列(零):UE 中的奇怪知识点
这里存放 ue 中令人费解的设计。
类名称前缀
虚幻引擎提供了在构建过程中生成代码的工具,如果要使用这些工具必须符合一些固定的类命名规则,如果类的命名与规则不符,将触发警告或错误。具体类的前缀命名规则如以下说明:
-
派生自
Actor
的类前缀为A
,比如AController
。 -
派生自
Object
的类前缀为U
,比如UComponent
。 -
派生自
SWidget
(Slate UI)的类前缀为S
,比如SButton
。 -
Enums
的前缀为E
,比如EFortificationType
。 -
Interface
类的前缀通常为I
,比如IAbilitySystemInterface
。 -
Template
类的前缀为T
,比如TArray
。 -
其余类的前缀均为 字母
F
,比如FVector
。
函数说明符
- BlueprintNativeEvent
此函数将由蓝图进行重载,但同时也包含native类的执行。提供一个名称为 [FunctionName]_Implementation
的函数本体而非 [FunctionName]
;自动生成的代码将包含转换程序,此程序在需要时会调用实现方法。
1 | // .h文件中的声明 |
- Server
此函数仅在服务器上执行。提供一个名称为 [FunctionName]_Implementation
的函数主体,而不是 [FunctionName]
; 自动生成的代码将包含一个转换程序来在需要时调用实现方法。
控制台
在 PIE 模式下按 ~
即可进入控制台,在控制台有许多调试用的功能:
Show Collision
显示角色的碰撞体
ShowDebug AbilitySystem
可打开GAS的debug页面。方框内是当前GAS的Debug目标,按PageUp和PageDown可切换目标。此外,可以在控制台输入AbilitySystem.Debug.NextCategory 查看下一页,一共有三页,每页都会显示角色身上拥有的Tag,再分别显示AttributeSet、GameplayEffect、GameplayAbility的信息。
UE 中的一些类型
TWeakObjectPtr
TWeakObjectPtr 是 Unreal Engine 4(UE4)中的一个模板类,它用于存储对UObject派生类实例的弱引用。
以下是TWeakObjectPtr的一些主要特点:
-
弱引用:TWeakObjectPtr不会阻止其指向的对象被垃圾回收。这意味着,如果你只有一个TWeakObjectPtr指向一个UObject,那么这个UObject仍然可能被销毁。
-
安全性:当你试图通过TWeakObjectPtr访问一个对象时,如果该对象已经被销毁,TWeakObjectPtr会返回null。这可以防止访问已经被销毁的对象,从而提高代码的安全性。
-
轻量级:与UObject的强引用相比,TWeakObjectPtr更轻量级。它不会增加UObject的引用计数,因此对性能的影响较小。
-
跨级别引用:TWeakObjectPtr可以安全地引用其他级别的对象,即使这些对象可能在加载和卸载级别时被销毁。
总的来说,TWeakObjectPtr在UE4中主要用于在不增加引用计数的情况下安全地引用UObject,特别是在跨级别引用和可能的对象生命周期问题中。