Unreal Engine 4 上的网络套接字?

Websockets on Unreal Engine 4?

我开始使用 Unreal Engine 4。我来自 Libgdx,我熟悉在我的游戏中使用 WebSockets 客户端,并在服务器上使用 'ws' 使用 NodeJS。

但是,我找不到关于 Websockets 和 Unreal Engine 4.

的信息

我知道,鉴于它是用 C++ 编程的,您可以将外部静态库添加到虚幻项目中。

我可以使用这个 c++ websocket 库吗?

https://github.com/zaphoyd/websocketpp

它会在 Windows、Mac 和控制台上 运行 吗?

我不是 C++ 和静态库方面的专家。 请帮忙,谢谢!

您可以在 TCP 套接字上关注 this tutorial

您需要对代码进行一些更改,因为它在 UE 4.10 上没有 运行(教程最初来自 2014 年)。

在 .h 文件中定义 2 个计时器句柄:

FTimerHandle TimerHandle_Connection;
FTimerHandle TimerHandle_Socket;

在 .cpp 文件中,在 StartTCPReceiver(...) 中将计时器设置为以下行:

GetWorldTimerManager().SetTimer(TimerHandle_Connection, this, &AYourClass::TCPConnectionListener, 0.01, true);

并在 TCPConnectionListener(...) 上将计时器设置为的行更改为:

GetWorldTimerManager().ClearTimer(TimerHandle_Connection);//optional, only if you want to stop listening for new connections
GetWorldTimerManager().SetTimer(TimerHandle_Socket, this, &AYourClass::TCPSocketListener, 0.01, true);

(另一种选择是将这些函数线程化,而不是将它们放在定时器中)

以防万一,如果您是 UE 新手,请不要直接在 IDE 上添加代码。转到内容浏览器 > 添加新 > 新 C++ Class。您可以创建一个继承自 Actor 的新 class,当您想要开始监听连接时,您会生成该 Actor。

您可以将任何 websocket 或第三方资产与 unreal engine 一起使用。例如,您可以使用 PrivateIncludePathModuleNames 在 Build.cs 文件中简单地添加 headers(还有一个 public 包含路径),它需要一个字符串数组,其中每个字符串都是一个文件夹本质上。如果你想添加一个库(lib)文件,你可以像这样添加它:

if (Target.Platform == UnrealTargetPlatform.Win32 ||
            Target.Platform == UnrealTargetPlatform.Win64)
{
            PublicSystemLibraries.Add("crypt32.lib");
}

您也可以在此处添加完整路径。如果你想做一个延迟加载,你可以只使用 PublicDelayLoadedDlls.Add("name") <- 我可能在这个语法上有错误,但它很容易 google 它。