UE接受WebSocket消息-像素流

UE5.0.3
新建C++项目
我们项目需求就是与前端通讯 前端发送Json对象给UE UE解析并且根据发送过来的数据进行操作

一、启动像素流插件(Pixel Streaming)

img.png

重启引擎

二、在C++中设置代理和添加组件

在XXXX.Build.cs(XXX是项目名字)中添加PixelStreaming模块

PublicDependencyModuleNames.AddRange(new string[] { "PixelStreaming" }); 

新建一个PlayerController
我这里命名为AMain_PlayerController

添加组件

#include "PixelStreamingDelegates.h"
#include "PixelStreamingInputComponent.h"
//信令服务器链接状态
UPROPERTY()
UPixelStreamingDelegates* ReturnValue;
//接受消息
UPROPERTY()
UPixelStreamingInput* PixelStreamingInputComponent;

构建函数AMain_PlayerController();
初始化成员

AMain_PlayerController::AMain_PlayerController(): ReturnValue(nullptr)
{
    ReturnValue=UPixelStreamingDelegates::GetPixelStreamingDelegates();
    PixelStreamingInputComponent=CreateDefaultSubobject<UPixelStreamingInput>(TEXT("PixelStreamingInput"));
}

添加链接用户的ID

//查看连接进来的玩家ID
void NewConnectionNative(FString PlayerId,bool WasQualityController) const;
//打印连接玩家的ID[app.js](..%2F..%2F..%2F..%2F..%2FUnrealProjects%2FP_SYS_LOC%2FWindows%2FSamples%2FPixelStreaming%2FWebServers%2FSignallingWebServer%2Fscripts%2Fapp.js)
void AMain_PlayerController::NewConnectionNative(FString PlayerId, bool WasQualityController) const
{
    UE_LOG(LogTemp, Warning, TEXT("ID为:%s"),*PlayerId);
}

新建函数JSONParse
(这个函数是用来接收消息的,不一定是非要JSONParse可以根据自身需求创建)
*注一定要带一个FString因为消息只能接受字符串,发送也是字符串

void JSONParse(const FString& InMessage);

BinginPlay中设置代理

void AMain_PlayerController::BeginPlay()
{
    Super::BeginPlay();
    //设置接受到消息后代理
    PixelStreamingInputComponent->OnInputEvent.AddDynamic(this,&AMain_PlayerController::JSONParse);
    //设置信令服务器代理
    ReturnValue->OnConnectedToSignallingServerNative.Broadcast();
    ReturnValue->OnNewConnectionNative.AddUObject(this, &AMain_PlayerController::NewConnectionNative);
    //ReturnValue->OnNewConnectionNative.AddUObject(this, &AMain_PlayerController::NewConnectionNative);
}

这样你的void AMain_PlayerController::JSONParse(const FString& InMessage){}中的InMessage就是你的WebSocket向UE发送的消息

最后修改:2025 年 01 月 21 日
如果觉得我的文章对你有用,请随意赞赏