-
点击C++类文件夹,在右边的区域点击鼠标右键,在弹出的菜单中选择"新建C++类"
-
在弹出的菜单中选中"显示所有类",选择GameInstanceSubsystem作为父类, 点击"下一步"按钮
-
输入子类名称"UVRVIUOnlineGameSubsystem",选择插件作为新类的目标模块,点击"公共"选择器
-
打开C++工程,找到".Build.cs"文件,在"PublicDependencyModuleNames"下,添加"MultiPlayerPlugin"
|-------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 |public
class
LandMaster : ModuleRules
{
``public
LandMaster(ReadOnlyTargetRules Target) : base(Target)
``{
``PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
``PublicDependencyModuleNames.AddRange(``new
string[] { ``"Core"``, ``"CoreUObject"``, ``"Engine"``, ``"InputCore"``, ``"UMG"``, ``"Http"``, ``"Json"``, ``"JsonUtilities"``, ``"Sockets"``, ``"Networking"``, ``"OnlineSubsystem"``, ``"OnlineSubsystemUtils"``, ``"MultiPlayerPlugin"
});
``PrivateDependencyModuleNames.AddRange(``new
string[] { ``"Slate"``, ``"SlateCore"
});
``}
}
| -
设置"MultiPlayerPlugin.uplugin"文件
|-------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |{
``"FileVersion"``: 3,
``"Version"``: 1,
``"VersionName"``: ``"1.0"``,
``"FriendlyName"``: ``"MultiPlayerPlugin"``,
``"Description"``: ``"plugin for multi player "``,
``"Category"``: ``"Other"``,
``"CreatedBy"``: ``"VRVIU_Jacky"``,
``"CreatedByURL"``: ``""``,
``"DocsURL"``: ``""``,
``"MarketplaceURL"``: ``""``,
``"SupportURL"``: ``""``,
``"EngineVersion"``: ``"4.26.0"``,
``"CanContainContent"``: ``true``,
``"Installed"``: ``true``,
``"Modules"``: [
``{
``"Name"``: ``"MultiPlayerPlugin"``,
``"Type"``: ``"Runtime"``,
``"LoadingPhase"``: ``"Default"``,
``"WhitelistPlatforms"``: [
``"Win32"``,
``"Win64"
``]
``}
``]
}
| -
设置插件".Build.cs"文件,添加需要引用的模块
|----------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |// Copyright Epic Games, Inc. All Rights Reserved.
using
UnrealBuildTool;
public
class
MultiPlayerPlugin : ModuleRules
{
``public
MultiPlayerPlugin(ReadOnlyTargetRules Target) : base(Target)
``{
``bEnableUndefinedIdentifierWarnings = ``false``;
``PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
``//bUsePrecompiled = true;
``PublicIncludePaths.AddRange(
``new
string[] {
``"MultiPlayerPlugin/Public"
``}
``);
``PrivateIncludePaths.AddRange(
``new
string[] {
``}
``);
``PublicDependencyModuleNames.AddRange(
``new
string[]
``{
``"Core"
``// ... add other public dependencies that you statically link with here ...
``}
``);
``PrivateDependencyModuleNames.AddRange(
``new
string[]
``{
``"CoreUObject"``,
``"Engine"``,
``"Slate"``,
``"SlateCore"``, ``"UMG"``, ``"Http"``, ``"Json"``, ``"JsonUtilities"``, ``"Sockets"``, ``"Networking"
``// ... add private dependencies that you statically link with here ...
``}
``);
``DynamicallyLoadedModuleNames.AddRange(
``new
string[]
``{
``// ... add any modules that your module loads dynamically here ...
``}
``);
``}
}
| -
获取本机IP地址
|----------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 |FString UVRVIUOnlineGameSubsystem::GetIpAddress(``bool
bHasPort ``/*= true*/``)
{
``FString IpAddr(``"NONE"``);
``bool
canBind = ``false``;
``TSharedRef<FInternetAddr>LocalIp = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->GetLocalHostAddr(*GLog, canBind);
``if
(LocalIp->IsValid())
``{
``IpAddr = LocalIp->ToString(bHasPort);
``}
``return
IpAddr;
}
| -
创建会话
|-------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 |FString cmd = ``"open "
+ Map + ``"?listen"``;
UGameplayStatics::GetPlayerController(GetWorld(), 0)->ConsoleCommand(cmd);
m_ServerAddress = ServerAddress.Len() == 0 ? GetIpAddress(``false``):ServerAddress;
| -
加入会话
|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 |UE_LOG(LogTemp, Warning, TEXT(``"UVRVIUOnlineGameSubsystem::ConnectServer %s"``), *IntranetIP);
FString cmd = ``"open "
+ IntranetIP;
UGameplayStatics::GetPlayerController(GetWorld(), 0)->ConsoleCommand(cmd);
m_ServerAddress = IntranetIP;
|
Unreal Engine添加UGameInstanceSubsystem子类
ChatGPT攻城狮2024-04-30 8:20
相关推荐
捕鲸叉5 小时前
创建线程时传递参数给线程A charmer5 小时前
【C++】vector 类深度解析:探索动态数组的奥秘Peter_chq5 小时前
【操作系统】基于环形队列的生产消费模型_oP_i6 小时前
Unity Addressables 系统处理 WebGL 打包本地资源的一种高效方式青花瓷6 小时前
C++__XCode工程中Debug版本库向Release版本库的切换幺零九零零8 小时前
【C++】socket套接字编程捕鲸叉8 小时前
MVC(Model-View-Controller)模式概述Dola_Pan9 小时前
C++算法和竞赛:哈希算法、动态规划DP算法、贪心算法、博弈算法yanlou2339 小时前
KMP算法,next数组详解(c++)小林熬夜学编程9 小时前
【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践