UE5 C++项目实现单例
在 UE5 中,要实现“全局只有一个实例”的单例模式,主要有两种思路:一种是传统 C++ 静态单例,另一种是利用 UE5 提供的Subsystem体系(如 UGameInstanceSubsystem、UWorldSubsystem 等)。下面先给出核心示例代码及对比,随后讨论典型使用场景、优缺点,对常见问题作出诊断并给出注意事项。
一、传统 C++ 静态单例
-
实现示例
// MySingleton.h
#pragma onceclass 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()