发布时间:2017-11-28责任编辑:朱明 浏览:2264
在实际开发中,有时候会需要读取写入可以全局访问的数据,此时有两个方法解决这个问题。一个是使用GameSave,进行全局访问。另一个方法便是使用单例类进行全局访问,UE4单例类使用与标准C++不同,需要以下步骤:
一、 创建一个新的集成自Object的C++类
二、 编写该C++类的内容
UCLASS(Blueprintable, BlueprintType)
class HELLOCODE_API USolusDataSingleton : public UObject
{
GENERATED_BODY()
public:
USolusDataSingleton();
//初始化资源表
UFUNCTION(Category = "DataTable", BlueprintCallable)
void InitResourceTableMap();
};
三、 新建一个蓝图函数库类
添加函数
//获得单例类
UFUNCTION(Category = "FunctionLibrary",BlueprintPure)
static USolusDataSingleton* GetSolusData(bool& IsValid);
USolusDataSingleton* UMyBlueprintFunctionLibrary::GetSolusData(bool& IsValid)
{
IsValid = false;
USolusDataSingleton* DataInstance = Cast<USolusDataSingleton>(GEngine->GameSingleton);
if (!DataInstance) return NULL;
if (!DataInstance->IsValidLowLevel()) return NULL;
IsValid = true;
return DataInstance;
}
四、 在项目设置页面配置单例类
五、 在蓝图中即可进行调用
战国工作室 供稿