はじめに
UE の C++ を触っていると A だの U だのようわからん接頭辞が出てきたので、調べてみたところ意外とあったのでちょっとだけまとめてみる。
A 接頭辞
A は AActor クラスに使用される。AActor クラスはゲーム内のオブジェクトを表し、ワールドに配置することができる。これらのオブジェクトはコンポーネントを持ち、移動、回転、スケーリングが可能。ワールドに存在し、動きがあるものは大体これな気がしている。
UCLASS()
class MYGAME_API AMyActor : public AActor
{
GENERATED_BODY()
public:
AMyActor();
};
U 接頭辞
U は UObject クラスに使用される。UObject クラスはより汎用的なオブジェクトで、ゲームワールド内に存在しない。ユーティリティクラスやデータコンテナなどに使用される。UObject クラスをそのまま使うことは少ない気がしているが、継承している UBoxComponent などで使用する機会が多そう。
UCLASS()
class MYGAME_API UMyObject : public UObject
{
GENERATED_BODY()
public:
UMyObject();
};
F 接頭辞
F は構造体(Struct)に使用される。構造体はデータの集まりを表し、軽量で効率的なデータ管理が可能。なぜ S ではないのか不思議に思うが、理由がちゃんとあるらしい (参考↓)
USTRUCT()
struct FMyStruct
{
GENERATED_BODY()
int32 MyValue;
};
I 接頭辞
I はインターフェース(Interface)に使用される。インターフェースはクラスが実装すべき関数のセットを定義するもの。
UINTERFACE()
class UMyInterface : public UInterface
{
GENERATED_BODY()
};
class IMyInterface
{
GENERATED_BODY()
public:
virtual void MyFunction() = 0;
};
S 接頭辞
S はスレートウィジェット(Slate Widget)に使用される。スレートは Unreal Engine の UI フレームワークのこと。
class SMyWidget : public SCompoundWidget
{
SLATE_BEGIN_ARGS(SMyWidget) {}
SLATE_END_ARGS()
void Construct(const FArguments& InArgs);
};
T 接頭辞
T はテンプレートクラス(Template Class)に使用される。テンプレートクラスは型に依存しない汎用的なクラスを作成するために使用される。
template<typename T>
class TMyTemplateClass
{
public:
T MyValue;
};
参考
変数にもある程度規則があるみたいですね