-
点击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
相关推荐
Morwit28 分钟前
Qt qml创建c++类的单例对象June`28 分钟前
IO模型全解析:从阻塞到异步(高并发的reactor模型)YxVoyager34 分钟前
Qt C++ :QRegularExpression 正则表达式使用详解闻缺陷则喜何志丹35 分钟前
【回文 字符串】3677 统计二进制回文数字的数目|2223淡海水36 分钟前
【节点】[RandomRange节点]原理解析与实际应用李余博睿(新疆)37 分钟前
c++分治算法oioihoii42 分钟前
Protocol Buffers 编码原理深度解析消失的旧时光-194343 分钟前
函数指针 + 结构体 = C 语言的“对象模型”?——从 C 到 C++ / Java 的本质统一郝学胜-神的一滴1 小时前
Linux系统编程:深入理解读写锁的原理与应用Larry_Yanan1 小时前
Qt多进程(十一)Linux下socket通信