Metaverse_Studio ├── Config # 配置文件目录:存放 JSON/CSV 配置文件 │ ├── DefaultEventConfig.json # 默认事件配置文件,用于配置 LevelSequence 的逻辑 │ ├── DefaultRoomConfig.json # 房间配置文件,定义物理房间与虚拟房间的映射关系 │ ├── DefaultVersionConfig.json # 版本管理配置,支持多场地差异化部署 │ └── ... ├── Content # 插件内置资源目录:存放插件自带的素材或UI资源 │ ├── UI # 工具界面的图标或样式资源 │ │ └── Icon128.png # 示例:图标资源 │ └── ... ├── Source # 源代码目录 │ ├── Metaverse_Studio # 插件的主模块 │ │ ├── Metaverse_Studio.Build.cs # 插件的构建脚本 │ │ ├── Public # 公共头文件:模块接口、配置管理等 │ │ │ ├── Core # 核心框架:模块管理器、模块基类 │ │ │ │ ├── MetaverseGameInstance.h │ │ │ │ ├── ModuleBase.h # 模块基类接口,用于定义模块的通用行为 │ │ │ │ ├── ModuleManager.h # 模块管理器,负责模块的注册和生命周期管理 │ │ │ │ ├── ConfigManager.h # 配置管理器,加载和解析 JSON/CSV 文件 │ │ │ │ ├── NetworkManager.h # 网络管理器,负责网络通讯 │ │ │ │ └── ... │ │ │ ├── Modules # 模块化设计:所有功能分为独立模块,通过模块管理器统一管理,支持动态扩展。 │ │ │ │ ├── RoomModule.h # 房间管理模块,负责物理房间与虚拟房间的映射 │ │ │ │ ├── SceneModule.h # 场景管理模块,使用 PAK 动态加载场景资源 │ │ │ │ ├── BoundaryModule.h # 引导边界模块,生成用户的移动引导区域 │ │ │ │ ├── SyncModule.h # 多人同步模块,实时同步用户信息,由单独的数据结构维护 │ │ │ │ ├── InteractionModule.h # 交互模块,提供动态交互逻辑 │ │ │ │ └── ... │ │ │ ├── Utilities/ # 工具类 │ │ │ │ ├── ProtoConverter.h # Protobuf转换工具 │ │ │ │ └── ... │ │ └── Private # 私有实现:模块的具体功能实现 │ │ │ ├── Core │ │ │ │ ├── MetaverseGameInstance.cpp │ │ │ │ ├── ModuleBase.cpp # 模块基类实现 │ │ │ │ ├── ModuleManager.cpp # 模块管理器实现 │ │ │ │ ├── ConfigManager.cpp # 配置管理器实现 │ │ │ │ ├── NetworkManager.cpp # 网络管理器实现 │ │ │ │ └── ... │ │ │ ├── Modules │ │ │ │ ├── RoomModule.cpp # 房间管理模块实现 │ │ │ │ ├── SceneModule.cpp # 场景管理模块实现 │ │ │ │ ├── BoundaryModule.cpp # 引导边界模块实现 │ │ │ │ ├── SyncModule.cpp # 多人同步模块实现 │ │ │ │ ├── InteractionModule.cpp # 交互模块实现 │ │ │ │ └── ... │ ├── Metaverse_StudioEditor # 插件的 Editor 模块:用于工具界面和可视化支持 │ │ ├── Metaverse_StudioEditor.Build.cs # Editor 模块的构建脚本 │ │ ├── Public │ │ │ └── UI │ │ │ ├── PAKToolUI.h # PAK 打包工具的界面支持,为美术提供资源打包支持。 │ │ │ ├── SequenceToolUI.h # Sequence配置工具,为策划提供时间轴逻辑配置支持,如在Seq编辑完后导出EventTable CSV配置表 │ │ │ └── InteractionToolUI.h # 交互配置工具的界面支持,为策划提供交互逻辑可视化配置。 │ │ └── Private │ │ └── UI │ │ ├── PAKToolUI.cpp # PAK 打包工具的界面实现 │ │ ├── SequenceToolUI.cpp # Sequence 配置工具的界面实现 │ │ └── InteractionToolUI.cpp # 交互配置工具的界面实现 │ ├── Metaverse_AI/ # 预留AI模块 │ └── Metaverse_Physics/ # 预留高级物理模块 ├── Resources # 插件的描述文件和图标 │ ├── Icon128.png # 插件图标 │ └── Metaverse_Studio.uplugin # 插件描述文件,定义插件元数据 1. 系统入口类 // 继承自UGameInstance,作为系统总控 UCLASS() class UMetaverseGameInstance : public UGameInstance { GENERATED_BODY() public: // 模块注册表 UPROPERTY() TMap ActiveModules; // 初始化所有模块 virtual void OnStart() override; }; 1. 模块管理系统 // 模块基类(抽象接口) UCLASS(Abstract) class IModuleBase : public UObject { GENERATED_BODY() public: virtual void InitializeModule() PURE_VIRTUAL(UModuleBase::InitializeModule); virtual void ShutdownModule() PURE_VIRTUAL(UModuleBase::ShutdownModule); virtual FString GetModuleName() const = 0; // 获取模块名称 }; // 模块管理器 UCLASS() class FMetaverseModuleManager{ GENERATED_BODY() TMap> RegisteredModules; template void RegisterModule(FName ModuleName) { RegisteredModules.Add(ModuleName, T::StaticClass()); } void UnregisterAllModules(); TSharedPtr GetModule(const FString& ModuleName); // 模板函数:直接获取特定模块的类型 template TSharedPtr GetModuleAs(const FString& ModuleName) { TSharedPtr BaseModule = GetModule(ModuleName); return StaticCastSharedPtr(BaseModule); } }; 1. 网络层改造 // 网络管理器(支持双协议) UCLASS() class METAVERSE_STUDIO_API UNetworkManager : public UObject { GENERATED_BODY() // UDP快速通道 void SendUdpDatagram(const TArray& Data); // TCP可靠通道 void EnqueueTcpPacket(const FMetaversePacket& Packet); private: FSocket* UdpSocket; FSocket* TcpSocket; FRunnableThread* TcpWorkerThread; // Protobuf序列化工具 TSharedPtr ProtoSerializer; };