Unreal Engine添加UGameInstanceSubsystem子类

  1. 点击C++类文件夹,在右边的区域点击鼠标右键,在弹出的菜单中选择"新建C++类"

  2. 在弹出的菜单中选中"显示所有类",选择GameInstanceSubsystem作为父类, 点击"下一步"按钮

  3. 输入子类名称"UVRVIUOnlineGameSubsystem",选择插件作为新类的目标模块,点击"公共"选择器

  4. 打开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" }); ``} } |

  5. 设置"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" ``] ``} ``] } |

  6. 设置插件".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 ... ``} ``); ``} } |

  7. 获取本机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; } |

  8. 创建会话

    |-------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
    | 1 2 3 | FString cmd = ``"open " + Map + ``"?listen"``; UGameplayStatics::GetPlayerController(GetWorld(), 0)->ConsoleCommand(cmd); m_ServerAddress = ServerAddress.Len() == 0 ? GetIpAddress(``false``):ServerAddress; |

  9. 加入会话

    |-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
    | 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; |

相关推荐
Paddi9301 小时前
Codeforces Round 1004 (Div. 1) C. Bitwise Slides
c++·算法
流星白龙5 小时前
【C++】36.C++IO流
开发语言·c++
靡不有初1116 小时前
CCF-CSP第31次认证第二题——坐标变换(其二)【NA!前缀和思想的细节,输出为0的常见原因】
c++·学习·ccfcsp
YH_DevJourney9 小时前
Linux-C/C++《C/7、字符串处理》(字符串输入/输出、C 库中提供的字符串处理函数、正则表达式等)
linux·c语言·c++
和光同尘@9 小时前
1011. A+B和C (15)-PAT乙级真题
c语言·开发语言·数据结构·c++·算法
虾球xz9 小时前
游戏引擎学习第108天
学习·游戏引擎
xianwu54310 小时前
反向代理模块kd
开发语言·网络·数据库·c++·mysql
虾球xz10 小时前
游戏引擎学习第112天
java·学习·游戏引擎
鄃鳕10 小时前
C++11 thread
开发语言·c++
wen__xvn11 小时前
每日一题洛谷P5738 【深基7.例4】歌唱比赛c++
java·c++·算法