这里存放 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
2
3
4
5
6
7
8
9
10
 // .h文件中的声明
public:
UFUNCTION(BlueprintNativeEvent, meta = (DisplayName = "Blueprint Native Event Function"), Category = "Snowing|BlueprintFunc")
FString BlueprintNativeEventFunction(AActor* In_AActor);

// .cpp中的定义
FString AActorTest::BlueprintNativeEventFunction_Implementation(AActor* In_AActor)
{
return In_AActor->GetName();
}
  • Server

此函数仅在服务器上执行。提供一个名称为 [FunctionName]_Implementation 的函数主体,而不是 [FunctionName]; 自动生成的代码将包含一个转换程序来在需要时调用实现方法。

控制台

在 PIE 模式下按 ~ 即可进入控制台,在控制台有许多调试用的功能:

  1. Show Collision

显示角色的碰撞体

  1. 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,特别是在跨级别引用和可能的对象生命周期问题中。