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

相关推荐
秦少游在淮海28 分钟前
C++ - string 的使用 #auto #范围for #访问及遍历操作 #容量操作 #修改操作 #其他操作 #非成员函数
开发语言·c++·stl·string·范围for·auto·string 的使用
const54436 分钟前
cpp自学 day2(—>运算符)
开发语言·c++
虾球xz1 小时前
CppCon 2015 学习:CLANG/C2 for Windows
开发语言·c++·windows·学习
CodeWithMe1 小时前
【C/C++】namespace + macro混用场景
c语言·开发语言·c++
SuperCandyXu2 小时前
leetcode2368. 受限条件下可到达节点的数目-medium
数据结构·c++·算法·leetcode
愈努力俞幸运3 小时前
c++ 头文件
开发语言·c++
~山有木兮3 小时前
C++设计模式 - 单例模式
c++·单例模式·设计模式
十五年专注C++开发3 小时前
CMake基础:gcc/g++编译选项详解
开发语言·c++·gcc·g++
HUN金克斯4 小时前
C++/C函数
c语言·开发语言·c++
慢半拍iii4 小时前
数据结构——F/图
c语言·开发语言·数据结构·c++