有没有碰到这样的问题,之前的同事用“连连看”实现了项目的逻辑,后续你要维护推展项目的开发。但头疼的是,你是个coder,not “连连看”玩家。这时候how to do it
UE4 C++ 访问蓝图里的变量
c++获得BP的方式
在访问蓝图变量之前,要先获得该蓝图,获得蓝图引用的方式
例如获得一个pawn
类的InitialSpeed
变量100
// BP
UPROPERTY(EditAnyWhere, BlueprintReadWrite, Category = "MyActor")
TSubclassOf<APawn> classToFind; // 使用这种方式可以过滤
TArray<AActor*> FoundActors;
UGameplayStatics::GetAllActorsOfClass(GetWorld(),ClassToFind,FoundActors);
关于TSubclassOf
的使用,参照
UE4_TSubClassOf 使用
c++ Get、Set BP变量
// .h 文件
UFloatProperty* FloatProp;
float VarValue;
// .cpp 文件
AActor* actor = FoundActors[0];
FloatProp = FindFieldChecked<UFloatProperty>(actor->GetClass(), "InitialSpeed");
VarValue = FloatProp->GetPropertyValue_InContainer(actor); // 获得100
FloatProp->SetPropertyValue_InContainer(actor,200); // 把InitialSpeed设置为200