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

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

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

-
打开C++工程,找到".Build.cs"文件,在"PublicDependencyModuleNames"下,添加"MultiPlayerPlugin"

|-------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 |publicclassLandMaster : ModuleRules{``publicLandMaster(ReadOnlyTargetRules Target) : base(Target)``{``PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;``PublicDependencyModuleNames.AddRange(``newstring[] { ``"Core"``, ``"CoreUObject"``, ``"Engine"``, ``"InputCore"``, ``"UMG"``, ``"Http"``, ``"Json"``, ``"JsonUtilities"``, ``"Sockets"``, ``"Networking"``, ``"OnlineSubsystem"``, ``"OnlineSubsystemUtils"``, ``"MultiPlayerPlugin"});``PrivateDependencyModuleNames.AddRange(``newstring[] { ``"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.usingUnrealBuildTool;publicclassMultiPlayerPlugin : ModuleRules{``publicMultiPlayerPlugin(ReadOnlyTargetRules Target) : base(Target)``{``bEnableUndefinedIdentifierWarnings = ``false``;``PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;``//bUsePrecompiled = true;``PublicIncludePaths.AddRange(``newstring[] {``"MultiPlayerPlugin/Public"``}``);``PrivateIncludePaths.AddRange(``newstring[] {``}``);``PublicDependencyModuleNames.AddRange(``newstring[]``{``"Core"``// ... add other public dependencies that you statically link with here ...``}``);``PrivateDependencyModuleNames.AddRange(``newstring[]``{``"CoreUObject"``,``"Engine"``,``"Slate"``,``"SlateCore"``, ``"UMG"``, ``"Http"``, ``"Json"``, ``"JsonUtilities"``, ``"Sockets"``, ``"Networking"``// ... add private dependencies that you statically link with here ...``}``);``DynamicallyLoadedModuleNames.AddRange(``newstring[]``{``// ... 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(``boolbHasPort ``/*= true*/``){``FString IpAddr(``"NONE"``);``boolcanBind = ``false``;``TSharedRef<FInternetAddr>LocalIp = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->GetLocalHostAddr(*GLog, canBind);``if(LocalIp->IsValid())``{``IpAddr = LocalIp->ToString(bHasPort);``}``returnIpAddr;}| -
创建会话
|-------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 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
相关推荐
IMPYLH1 分钟前
Lua 的 select 函数Demon--hx4 分钟前
[C++]迭代器失效问题liulilittle4 分钟前
C++ 计算当前时区偏移量秒数(GMT/UNIX偏移量)再睡一夏就好6 分钟前
深入理解Linux程序加载:从ELF文件到进程地址空间的完整旅程lijiatu100867 分钟前
[C++] 上锁、解锁、获取锁、释放锁的区别阿沁QWQ14 分钟前
STL和string实现乌萨奇也要立志学C++29 分钟前
【Linux】线程概念 线程与进程深度剖析:虚实内存转换、实现机制与优缺点详解爱学习的小邓同学30 分钟前
数据结构 --- 二叉搜索树Wild_Pointer.37 分钟前
高效工具实战指南:CMake构建工具可峰科技1 小时前
Apriltag_ros CMakeList.txt一句话导致其他包编译失败