我对theodox也有同样的疑问,
如果输入不必立即/实时发生。
例如,您可以为您的模拟更新一个参数文件并读取您的虚幻引擎应用程序中的参数。
下面是创建 readFile bluemix 函数以读取和解析外部 JSON 文件的示例:
在/Source/[项目名称]/MyBlueprintFunctionLibrary.h中,定义输出结构和函数头
USTRUCT(BlueprintType)
struct FResultStruct
{
GENERATED_USTRUCT_BODY()
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category = "Result Struct")
float fieldname1;
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category = "Result Struct")
FString fieldname2;
//Constructor
FResultStruct()
{
fieldname1 = 0;
fieldname2 = "string";
}
};
UCLASS()
class EXPERIMENTALPROJECT_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "MyBPLibrary")
static FResultStruct ReadFile(FString fileName);
};
在 /Source/[Project name]/MyBlueprintFunctionLibrary.cpp 中实现你的参数文件解析器,例如:
// Read the results file
FResultStruct UMyBlueprintFunctionLibrary::ReadFile(FString fileName)
{
FString saveFilePath = FPaths::ConvertRelativePathToFull(FPaths::GameDir());
fileName = saveFilePath + fileName;
FResultStruct Result;
FString jsonString;
FFileHelper::LoadFileToString(jsonString, *fileName);
TSharedPtr<FJsonObject> JsonParsed;
TSharedRef<TJsonReader<TCHAR>> JsonReader = TJsonReaderFactory<TCHAR>::Create(jsonString);
if (FJsonSerializer::Deserialize(JsonReader, JsonParsed))
{
Result.fieldname1 = JsonParsed->GetNumberField("fieldname1");
Result.fieldname2 = JsonParsed->GetStringField("fieldname2");
}
return Result;
}
在你的虚幻引擎蓝图中你可以调用这个文件读取函数并在你的应用程序中使用它的解析内容:
example
如果您需要实时输入,您可能需要在 UE4 中创建 HUD 并为您的所有参数创建输入字段,这对 imo 来说是更加劳动密集型的。