如何从外部源将信息传递到虚幻引擎

时间:2017-06-28 03:20:08

标签: rpc grpc unreal-engine4

问题: 我想要一个高质量的模拟可视化,我已经构建并在另一个应用程序上运行。虚幻引擎4具有可行的模型,并且可以很好地呈现以满足我的需求。唯一的问题是,我需要告诉虚幻引擎项目的运行实例我的模拟正在创建的一些信息,比如移动对象。

潜在的解决方案:

rpc插件?

我对grpc非常熟悉,我的模拟设置为发送和接收grpc消息,但我不知道如何通过unreal_engine实现grpc。互联网上的其他几个人已经编写了rpc插件,这可能适合我的需求。例如... https://github.com/PaddleCreekGames/Proto3RPC_UE4 但是,不知道如何完成这一堆工作并实际使用我想要的东西。毋庸置疑,该特定项目的文档对于没有编写该项目的用户不友好。

还有别的吗?

如果您有任何想法,或者您历史上以特定的方式将信息传递给虚幻引擎,那么任何指向正确方向的指针/代码片段/链接到我可能错过的内容都将非常感激。

1 个答案:

答案 0 :(得分:0)

我和东正教有同样的问题, 如果输入不必立即/实时发生。 例如,您可以为模拟更新参数文件,并在虚幻引擎应用程序中读取参数。 下面是一个创建readFile bluemix函数来读取和解析外部JSON文件的示例:

/ Source / [Project name] /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。

相关问题