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 它。
我开始使用 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 它。