赞
踩
以像素流举例.
UE5.0.3
新建C++项目
我们项目需求就是与前端通讯 前端发送Json对象给UE UE解析并且根据发送过来的数据进行操作
重启引擎
在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
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);
}
这样你的void AMain_PlayerController::JSONParse(const FString& InMessage){}中的InMessage就是你的WebSocket向UE发送的消息
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。