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

相关推荐
郝学胜_神的一滴36 分钟前
CMake 27:缓存变量的特性、语法、类型与实操全解
c++·cmake
博客18002 天前
酷宝的使用方法,超好用的免费界面库,C++、MFC可用
c++·mfc·界面库·库来帮·酷宝
郝学胜_神的一滴2 天前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake
众少成多积小致巨3 天前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
clint4567 天前
C++进阶(1)——前景提要
c++
夜悊7 天前
C++代码示例:进制数简单生成工具
c++
郝学胜_神的一滴7 天前
CMake 021: IF 条件判据详诠
c++·cmake
_wyt0018 天前
洛谷 B3930 [GESP202312 五级] 烹饪问题 题解
c++·gesp
玖玥拾8 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
один but you8 天前
constexpr函数
c++