xmdzsdjc 2025-10-04 21:04 采纳率: 40%
浏览 7

关于#游戏引擎#的问题:我的虚幻引擎5.6创建的一个第一人称游戏类项目为什么我在更改项目的游戏模式在地图和模式的默认游戏模式下面找不到我新建的蓝图

我的虚幻引擎5.6创建的一个第一人称游戏类项目为什么我在更改项目的游戏模式在地图和模式的默认游戏模式下面找不到我新建的蓝图?(默认的游戏模式也是none,是不是项目编译错了,vs2022里面创建的C++类是直接编译吗?)
就是按ue5官方教程做的

img

img

我项目编译的时候是右键AdventureGame点的生成,这样编译对吗?

img

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2025-10-04 21:05
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    你提到的问题是关于 虚幻引擎 5.6 中,创建了一个第一人称游戏类项目后,在“地图和模式”(Map and Modes)中找不到你新建的蓝图作为“默认游戏模式”。这个问题可能涉及多个方面,包括项目设置、蓝图编译、C++类生成以及游戏模式的配置。


    ✅ 问题分析

    1. 你的项目是基于 C++ 创建的第一人称模板项目吗?

      • 如果你是通过 C++ 模板(如 First Person 模板)创建的项目,并且使用了 Visual Studio 2022 编译项目,那么你需要确保 C++ 类正确生成并被引擎识别。
    2. “默认游戏模式”选项为空或没有你新建的蓝图

      • 这通常是因为:
        • 蓝图未正确生成未被引擎识别
        • C++ 类未正确编译未被引擎加载
        • 项目设置不正确,例如游戏模式未正确关联
    3. 是否在 Visual Studio 中正确编译了项目?

      • 是的,右键点击项目 -> Generate Project Files 是正确的做法,但还需要 Build Solution 来编译代码。否则 C++ 类不会被引擎识别。

    🔧 解决方案

    第一步:确认 C++ 类已正确编译

    1. 打开 Visual Studio 2022,打开你的 .sln 文件。
    2. 确保所有 C++ 类(如 MyGameModeMyPlayerController)已经生成。
    3. 解决方案资源管理器 中,查看是否有 .cpp.h 文件。
    4. 右键点击项目 -> Build Solution(不是只生成,而是实际编译)。

    注意: 仅执行 Generate Project Files 不会编译代码,必须执行 Build Solution 才能将 C++ 类加载到引擎中。


    第二步:确认游戏模式类已注册

    1. C++ 项目中,确保你创建的类继承自 AGameModeBase,例如:
    // MyGameMode.h
    #pragma once
    
    #include "CoreMinimal.h"
    #include "GameFramework/GameModeBase.h"
    #include "MyGameMode.generated.h"
    
    UCLASS()
    class MYPROJECT_API AMyGameMode : public AGameModeBase
    {
        GENERATED_BODY()
    
    public:
        AMyGameMode();
    };
    
    // MyGameMode.cpp
    #include "MyGameMode.h"
    
    AMyGameMode::AMyGameMode()
    {
        // 设置默认的玩家控制器
        DefaultPawnClass = AMyCharacter::StaticClass();
        PlayerControllerClass = AMyPlayerController::StaticClass();
    }
    
    1. 确保在 MyProject.Build.cs 中添加了对 GameFramework 的引用:
    PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "GameFramework" });
    

    第三步:检查项目设置中的游戏模式

    1. 打开 项目设置(Edit -> Project Settings)
    2. 导航到 Maps & Modes 部分
    3. 查看 Default Game Mode 是否指向你创建的蓝图或 C++ 类

    如果这里没有你创建的类,可能是以下原因:

    • C++ 类未被正确编译
    • 蓝图未被保存或未被正确命名
    • 项目未重新加载或未重启引擎

    第四步:重新加载项目或重启引擎

    1. Unreal Engine 中,点击 File -> RebuildRestart Editor
    2. 有时候需要完全关闭引擎再重新打开,以确保所有类都被正确加载

    第五步:检查蓝图是否正确创建

    1. 如果你使用的是 蓝图 而不是 C++ 类:
      • 确保你创建的是 Game Mode 类型的蓝图
      • Content Browser 中,右键 -> Create Blueprint Class -> 选择 Game Mode Base
      • 保存为 BP_MyGameMode
    2. Project Settings -> Maps & Modes 中,选择该蓝图作为 Default Game Mode

    🧠 常见错误总结

    | 问题 | 原因 | 解决方法 | |------|------|----------| | 游戏模式未显示 | C++ 类未编译或未正确生成 | Build Solution,检查类定义和头文件 | | 蓝图未显示 | 蓝图类型错误或未保存 | 使用 Game Mode Base 创建蓝图,保存后刷新 | | 项目设置错误 | 默认游戏模式未设置 | 在 Project Settings 中设置正确的 Game Mode |


    ✅ 最终建议

    如果你是按照官方教程做的,那么请按以下步骤操作:

    1. 在 Visual Studio 中 Build Solution(而不是仅生成)
    2. 在 Unreal Editor 中 重启Rebuild
    3. 检查 Project Settings -> Maps & Modes 中是否显示你的 Game Mode
    4. 如果是蓝图,请确保它是一个 Game Mode 类型

    💡 示例:C++ 类的完整结构(用于参考)

    // MyGameMode.h
    #pragma once
    
    #include "CoreMinimal.h"
    #include "GameFramework/GameModeBase.h"
    #include "MyGameMode.generated.h"
    
    UCLASS()
    class MYPROJECT_API AMyGameMode : public AGameModeBase
    {
        GENERATED_BODY()
    
    public:
        AMyGameMode();
    };
    
    // MyGameMode.cpp
    #include "MyGameMode.h"
    
    AMyGameMode::AMyGameMode()
    {
        // 设置默认玩家角色
        DefaultPawnClass = AMyCharacter::StaticClass();
        PlayerControllerClass = AMyPlayerController::StaticClass();
    }
    

    如果你仍然无法解决问题,可以提供更详细的项目结构信息或截图,我可以进一步帮你定位问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月4日