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

相关推荐
QuantumStack3 小时前
【C++ 真题】B2037 奇偶数判断
数据结构·c++·算法
结衣结衣.3 小时前
C++ 类和对象的初步介绍
java·开发语言·数据结构·c++·笔记·学习·算法
学习使我变快乐4 小时前
C++:静态成员
开发语言·c++
心怀花木4 小时前
【C++】多态
c++·多态
风清扬_jd4 小时前
Chromium 添加书签功能浅析c++
c++·chrome
吃椰子不吐壳4 小时前
c++类与对象二
c++
zaim16 小时前
计算机的错误计算(一百一十四)
java·c++·python·rust·go·c·多项式
学习使我变快乐6 小时前
C++:const成员
开发语言·c++
一律清风9 小时前
QT-文件创建时间修改器
c++·qt
风清扬_jd9 小时前
Chromium 如何定义一个chrome.settingsPrivate接口给前端调用c++
前端·c++·chrome