UE5 C++项目实现单例
在 UE5 中,要实现“全局只有一个实例”的单例模式,主要有两种思路:一种是传统 C++ 静态单例,另一种是利用 UE5 提供的Subsystem体系(如 UGameInstanceSubsystem、UWorldSubsystem 等)。下面先给出核心示例代码及对比,随后讨论典型使用场景、优缺点,对常见问题作出诊断并给出注意事项。
一、传统 C++ 静态单例
-
实现示例
// MySingleton.h
#pragma once
class FMySingleton
{
public:
// 全局访问接口
static FMySingleton& Get()
{
static FMySingleton Instance;
return Instance;
}
// 对外功能示例
void DoSomething() { /* ... */ }
private:
FMySingleton() {} // 构造私有化
~FMySingleton() {}
FMySingleton(const FMySingleton&) = delete; // 禁止拷贝
FMySingleton& operator=(const FMySingleton&) = delete;
};
// 使用
FMySingleton::Get().DoSomething();
-
核心在于:
Get()