UE4里的全局变量,全局函数

https://wiki.unrealengine.com/Global_Data_Access,_Data_Storage_Class_Accessible_From_Any_CPP_or_BP_Class_During_Runtime!

Create The CPP Base Class
SolusDataSingleton.h

UCLASS(Blueprintable, BlueprintType)
class USolusDataSingleton : public UObject
{
	GENERATED_BODY()
public:
        USolusDataSingleton(const FObjectInitializer& ObjectInitializer);
 
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Solus Data Singleton")
	TArray<UClass*> SolusTreeBlueprints;
 
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Solus Data Singleton")
	UTexture2D* SolusT2D;
 
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Solus Data Singleton")
	FVector SolusEssentialVector;
 
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Solus Data Singleton")
	FString SolusCoreFilePath;
};

SolusDataSingleton.cpp

#include "Solus.h"
#include "SolusDataSingleton.h"
USolusDataSingleton::USolusDataSingleton(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer)
{ 
	SolusCoreFilePath = "E:/Solus";
 
	SolusEssentialVector = FVector(9000,0,0);
}

 

Create The BP_ClassXXX of the CPP Class

Project Settings->Engine->General, 将Game Singleton Class设置为BP_ClassXXX

 

Easily Set Default Values Any Time!

Function Library To Access Anywhere in BP

SolusDataSingletonLibrary.h

#pragma once
 
//Data Singleton Class
#include "SolusDataSingleton.h"
 
#include "SolusDataSingletonLibrary.generated.h"
 
//note about UBlueprintFunctionLibrary
// This class is a base class for any function libraries exposed to blueprints.
// Methods in subclasses are expected to be static, and no methods should be added to the base class.
 
UCLASS()
class SOLUS_API USolusDataSingletonLibrary : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()
public:
	USolusDataSingletonLibrary(const FObjectInitializer& ObjectInitializer);
 
	UFUNCTION(BlueprintPure,   Category="Solus Data Singleton")
	static USolusDataSingleton* GetSolusData(bool& IsValid);
 
};

SolusDataSingletonLibrary.cpp

#include "Solus.h"
#include "SolusDataSingletonLibrary.h"
//
// USolusDataSingletonLibrary
 
USolusDataSingletonLibrary::USolusDataSingletonLibrary(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer)
{ 
 
}
 
USolusDataSingleton* USolusDataSingletonLibrary::GetSolusData(bool& IsValid)
{
	IsValid = false;
	USolusDataSingleton* DataInstance = Cast<USolusDataSingleton>(GEngine->GameSingleton);
 
	if(!DataInstance) return NULL;
	if(!DataInstance->IsValidLowLevel()) return NULL;
 
	IsValid = true;
	return DataInstance;
}


 

转载于:https://my.oschina.net/robslove/blog/876648

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值