ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

用Trae AI在UE5中开发超级玛丽风格横版游戏实战

用Trae AI在UE5中开发超级玛丽风格横版游戏实战 如果你最近刷到过“游戏开发行业大变天AI 也能做游戏了”这类标题大概率就是在说同一件事TraeAI 这类 AI 编程工具正在把 UE5 游戏开发的门槛往下拉。今天这篇不聊概念直接把它放进 Unreal Engine 5 里一步步做一款超级玛丽风格的横版平台跳跃游戏看看 AI 到底能在 UE5 流程里帮我们写到什么程度。这次的主角是 Trae。它是一个 AI 原生 IDE内置代码生成、代码解释、重构和智能补全能力可以直接打开 UE5 项目目录读取源码然后通过自然语言对话生成 UE5 C 类。对于不想手写重复样板代码的人来说Trae 相当于给 UE5 开发配了一个熟悉引擎 API、能直接输出可编译代码的“结对编程搭档”。本文会用“项目创建 - Trae 生成玩家角色 - 编译生成蓝图 - 添加敌人、金币、UI - 批量任务和性能排查”的完整路线带你把一个类超级玛丽原型跑起来。如果你是刚开始接触 UE5或者已经在用蓝图但想转向 C又或者只想快速验证玩法原型这篇可以直接对照操作。1. 核心能力速览先把最关键的规格信息放在前面方便判断这个方案是否适合你。能力项说明项目类型AI 编程工具辅助 UE5 C 游戏开发工具名称Trae AI IDE核心功能自然语言生成 UE5 C 代码、解释报错、重构代码、批量生成多个类配合引擎Unreal Engine 5建议使用官方推荐的稳定版本目标玩法示例2D 横版平台跳跃超级玛丽式移动、跳跃、踩敌人、收集金币、过关硬件门槛Trae 的模型能力在云端本机只要能正常跑 IDE 即可UE5 本身需要独立显卡和较大内存启动方式下载 Trae - 打开 UE5 C 项目 - 在对话框中描述需求 - 把生成代码放入 Source 目录是否支持 API 调用本文项目不涉及 HTTP 接口服务Trae 作为 IDE 提供的是交互式 AI 能力不是后端 API是否支持批量任务支持在一个会话中连续生成多个模块更稳妥的做法是拆成小任务逐个验证适合人群UE5 初学者、独立游戏开发者、想从蓝图切到 C 的人、需要快速做玩法原型的团队需要说明的是Trae 不负责解决 UE5 官方文档之外的设计问题。它擅长生成结构清晰的 C 类、接口、组件代码但你的工程结构、命名规范、玩法手感还是要自己把握。2. 适用场景与使用边界2.1 适合做什么快速原型想验证“跳跃 踩敌人 吃金币”这套玩法能不能成立不用花几天搭框架让 Trae 先生成一个可运行 Demo。样板代码生成UE5 C 项目里每新建一个 Actor 类都要写GENERATED_BODY()、构造函数、Tick、BeginPlay 等一堆固定代码。这些东西让 Trae 写效率高很多。学习 UE5 C遇到不懂的 API可以让 Trae 解释代码或者直接让它用注释说明每个函数的作用。蓝图项目的 C 化项目复杂到蓝图连线难以维护时可用 Trae 把关键逻辑改写成 C 类再把蓝图基于这类创建。2.2 不适合做什么超大系统多人联机同步、服务端权威逻辑、复杂 AI 行为树、海量资产管线这些不只是代码生成问题AI 很难一次给你一个可上线的架构。纯美术和动画生产Trae 不会替你建模、画贴图、调整动画曲线。超级玛丽风格需要的美术和音频还得单独准备。零基础直接“无脑生成伟大游戏” 如果一个人连 UE5 怎么启动、蓝图节点怎么连、编译失败怎么处理都不了解AI 生成代码反而会变成巨大灾难。AI 是放大器你有解决问题的能力它会加速你你完全没有基础它只会把错误加快放大。2.3 使用边界与合规提醒超级玛丽是任天堂的经典 IP。你可以参考“横版平台跳跃、踩敌人、吃金币”这个玩法方向但不要直接使用任天堂的角色形象、地图美术、音效、音乐素材。发布到公开平台或用于商业用途之前请务必确认所有素材来源合法AI 生成代码的使用也要遵守相应工具的服务条款。涉及版权、肖像、素材授权问题时以授权文件和法律规定为准。3. 环境准备与前置条件3.1 安装 TraeTrae 有 Windows 和 macOS 客户端直接到官网下载即可。安装完成后登录账号它内置的 AI 对话、代码补全基本都在云端因此对本地显卡没有要求。你只需要保证操作系统可以正常跑 IDE网络稳定代码生成速度和网络质量直接相关磁盘剩余空间能容纳 UE5 编辑器、项目缓存和编译中间文件。3.2 安装 UE5 和编译工具UE5 需要经过 Epic Games 启动器下载。建议直接从启动器安装官方稳定版本不要只安装“引擎”还要安装“C 项目”支持的运行库。在 Windows 上UE5 的 C 项目需要 Visual Studio。安装时务必勾选“使用 C 的游戏开发”工作负载这样会带出 MSVC 编译器、Windows SDK 等关键组件。有很多人卡在“新建 C 项目失败”或“编译报错找不到 cl.exe”都是因为 VS 没安装完整。3.3 创建 C 工程打开 Epic 启动器从 UE5 的版本下拉框启动引擎然后新建项目项目类型空白 C 项目项目名称建议用英文或拼音不要用中文和空格例如MyPlatformGame目标平台桌面平台起始内容如果是纯代码学习可以关闭减少首次编译时间。项目创建后工程目录里会有一个Source/MyPlatformGame/目录。里面通常包含Public和Private子目录后续所有 C 文件都放这里。创建完成后第一次打开 C 项目会比较慢因为引擎需要编译模块。可以顺手打开MyPlatformGame.uproject所在目录用 Trae 把它作为工作区打开。4. 从 Trae 对话生成第一个 UE5 类4.1 准备提示词Trae 的提示词很关键。与其说“帮我写一个游戏”不如说“帮我用 UE5 C 实现某个模块”。下面是建议的提示词结构项目背景 - 引擎版本UE5 - 项目名称MyPlatformGame - 目录结构Source/MyPlatformGame/Public 和 Private 任务 1. 生成一个 ACharacter 子类命名为 AMarioLikeCharacter。 2. 实现水平移动、跳跃。 3. 使用经典 InputComponent 绑定方式。 4. 输出 .h 和 .cpp 两个文件。 5. 需要包含必要的头文件和 UE 宏。这个提示词的作用是把范围缩小到一个类。范围越小生成结果越容易编译通过。后面每扩展一个功能再开新对话或保留上下文继续追问。4.2 Trae 生成玩家角色代码下面是以“经典输入绑定 水平移动 跳跃”为例的参考代码。实际 Trae 生成结果可能略有差异但核心结构应该一致。.h文件#pragma once #include CoreMinimal.h #include GameFramework/Character.h #include MarioLikeCharacter.generated.h UCLASS() class MYPLATFORMGAME_API AMarioLikeCharacter : public ACharacter { GENERATED_BODY() public: AMarioLikeCharacter(); protected: virtual void BeginPlay() override; public: virtual void Tick(float DeltaTime) override; virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; void MoveRight(float Value); void JumpPressed(); void JumpReleased(); };.cpp文件#include MarioLikeCharacter.h #include GameFramework/CharacterMovementComponent.h AMarioLikeCharacter::AMarioLikeCharacter() { PrimaryActorTick.bCanEverTick true; } void AMarioLikeCharacter::BeginPlay() { Super::BeginPlay(); } void AMarioLikeCharacter::Tick(float DeltaTime) { Super::Tick(DeltaTime); } void AMarioLikeCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent); PlayerInputComponent-BindAxis(MoveRight, this, AMarioLikeCharacter::MoveRight); PlayerInputComponent-BindAction(Jump, IE_Pressed, this, AMarioLikeCharacter::JumpPressed); PlayerInputComponent-BindAction(Jump, IE_Released, this, AMarioLikeCharacter::JumpReleased); } void AMarioLikeCharacter::MoveRight(float Value) { if (FMath::Abs(Value) 0.1f) { AddMovementInput(FVector(1.0f, 0.0f, 0.0f), Value); } } void AMarioLikeCharacter::JumpPressed() { Jump(); } void AMarioLikeCharacter::JumpReleased() { StopJumping(); }注意几点MYPLATFORMGAME_API中的MYPLATFORMGAME要根据实际项目名替换项目名不同这里就不同。代码使用的是 UE5 旧版输入系统InputComponent。如果你新建项目默认使用 Enhanced Input角色配置会稍复杂需要创建Input Action、Input Mapping Context并在玩家控制器里映射按键。Trae 也可以生成对应代码但提示词里最好写明“使用 Enhanced Input”。跳跃输入中JumpPressed/JumpReleased的设计能让玩家按一下起跳、松手停止上升手感接近经典平台跳跃。4.3 编译并生成蓝图将 Trae 生成的.h和.cpp分别放入Source/MyPlatformGame/Public/MarioLikeCharacter.h Source/MyPlatformGame/Private/MarioLikeCharacter.cpp回到 UE5 编辑器点“Compile”按钮等待编译完成。如果编译成功能在内容浏览器里右键创建蓝图类父类选择AMarioLikeCharacter。如果编辑器没有识别到新类可以重启编辑器或者在Tools - Refresh Visual Studio Project刷新项目文件。在创建出来的蓝图里不需要写任何 C 逻辑。只需要设置添加一个胶囊碰撞体作为身体碰撞添加一个静态网格作为视觉占位添加弹簧臂和跟随相机让镜头跟住角色。接下来可以进入 Project Settings - Input 添加输入映射Axis 映射MoveRight绑定键盘A为 -1D为 1Action 映射Jump绑定空格键。只要这一步通了你就已经跑通了“Trae 生成 UE5 C - 编译 - 蓝图使用”的完整链路。5. 用 Trae 完成超级玛丽核心玩法5.1 角色移动与镜头跟随Trae 生成代码后角色只有移动和跳跃函数还不能在横板关卡里顺畅观察画面。最好让 Trae 再生成弹簧臂和相机组件。继续在对话中输入请给 AMarioLikeCharacter 添加 SpringArmComponent 和 CameraComponent 相机跟随角色旋转但只用于横板视角Yaw 旋转固定Roll 和 Pitch 为 0。Trae 会在构造函数里添加组件// 构造函数示例 #include Camera/CameraComponent.h #include GameFramework/SpringArmComponent.h AMarioLikeCharacter::AMarioLikeCharacter() { PrimaryActorTick.bCanEverTick true; SpringArmComp CreateDefaultSubobjectUSpringArmComponent(TEXT(SpringArmComp)); SpringArmComp-SetupAttachment(RootComponent); SpringArmComp-bEnableCameraLag true; SpringArmComp-TargetArmLength 800.0f; CameraComp CreateDefaultSubobjectUCameraComponent(TEXT(CameraComp)); CameraComp-SetupAttachment(SpringArmComp); }不要把“固定 Yaw”写成直接FRotator硬编码因为在不同角色朝向下容易出错。更好的做法是在蓝图中把相机和弹簧臂的旋转限制条件手动处理好或者让 Trae 在Tick里锁定相机 Roll/Pitch仅保留 Yaw 为 0。5.2 敌人超级玛丽“踩敌人”逻辑经典超级玛丽里敌人从侧面碰到会受伤玩家从上往下踩会消灭敌人。这个逻辑很适合用一个 Actor 实现敌人有碰撞体玩家从上方踩到敌人时叠加事件触发敌人销毁同时玩家执行一次小跳跃玩家从侧面碰到敌人时触发玩家受伤逻辑。用 Trae 生成敌人的提示词请在 UE5 中生成一个 AActor 子类 AMarioEnemy 功能 1. 有碰撞体 BoxComponent 和视觉 StaticMeshComponent。 2. 左右来回移动。 3. 当玩家角色踩到敌人顶部时敌人销毁并把玩家向上弹起。 4. 实现通用 Overlap 事件。生成的敌人核心逻辑大致如下void AMarioEnemy::OnOverlapBegin(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult SweepResult) { AMarioLikeCharacter* Player CastAMarioLikeCharacter(OtherActor); if (!Player) { return; } const float PlayerBottom Player-GetActorLocation().Z - Player-GetCapsuleComponent()-GetScaledCapsuleHalfHeight(); const float EnemyTop GetActorLocation().Z GetComponentsBoundingBox().GetExtent().Z; // 如果玩家底部比敌人顶部高说明是“踩” if (PlayerBottom EnemyTop - 5.0f) { Player-LaunchCharacter(FVector(0, 0, 600.0f), false, false); Destroy(); } else { // 侧面碰撞触发玩家受伤逻辑 Player-HandleHitByEnemy(); } }这个代码可以根据实际碰撞盒大小调整阈值。Trae 生成的版本不一定完全一样但只要语义接近就能实现“踩死敌人”的经典交互。5.3 金币收集与计分金币收集很简单可以单独生成一个AMarioCoinActorUCLASS() class MYPLATFORMGAME_API AMarioCoin : public AActor { GENERATED_BODY() public: AMarioCoin(); UPROPERTY(VisibleAnywhere) class USphereComponent* CollisionComp; UPROPERTY(VisibleAnywhere) class UStaticMeshComponent* MeshComp; UFUNCTION() void OnOverlapBegin(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult SweepResult); };在OnOverlapBegin中如果OtherActor是玩家角色就调用一个AddCoin()接口并销毁自己。计分工作可以让 GameMode 完成也可以先粗暴地放在玩家角色内部原型阶段够用。5.4 关卡切换与胜利判断当玩家到达终点旗帜时应该切换关卡。最简单的实现方式是用UGameplayStatics::OpenLevel#include Kismet/GameplayStatics.h void AFinishFlag::OnOverlapBegin(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult SweepResult) { if (CastAMarioLikeCharacter(OtherActor)) { UGameplayStatics::OpenLevel(this, FName(Level2)); } }在提示词中让 Trae 生成“关卡终点 Actor玩家进入后切换到下一个关卡”即可。这种方式适合原型但正式项目需要先用软线框切换、黑屏过渡再加载避免卡顿。6. 蓝图补充与 UI 界面6.1 UMG 计分 UI超级玛丽风格需要一个简单的分数 UI。传统办法是创建WidgetBlueprint添加一个TextBlock显示金币数或分数当金币变化时调用蓝图里的UpdateScore函数或绑定事件。Trae 也可以帮你生成对应的 UMG 交互代码但纯蓝图更直观。在 Trae 中让 AI 生成一个UUserWidget子类#pragma once #include CoreMinimal.h #include Blueprint/UserWidget.h #include ScoreWidget.generated.h class UTextBlock; UCLASS() class MYPLATFORMGAME_API UScoreWidget : public UUserWidget { GENERATED_BODY() public: UPROPERTY(meta (BindWidget)) UTextBlock* ScoreText; UFUNCTION(BlueprintCallable) void SetScore(int32 NewScore); UFUNCTION(BlueprintCallable) void SetCoinCount(int32 NewCount); };在蓝图里把ScoreText绑定到 UI 上的 TextBlock就可以用 C 函数更新 UI。6.2 UI 与逻辑的衔接方式不要让角色直接持有 Widget 实例更规范的做法是在PlayerController或GameMode创建 Widget。玩家收集金币时调用 GameMode 的接口GameMode 再通知 UI 刷新。原型阶段可以先简单一点在AMarioLikeCharacter里定义一个TSubclassOfUScoreWidget ScoreWidgetClass在BeginPlay时创建 Widget 并添加到视口金币数变化时直接调用SetCoinCount。这样代码量少跑通体验最快。等原型稳定后再拆到 PlayerController / GameMode防止逻辑膨胀。7. 批量任务让 Trae 一次生成多个模块7.1 任务拆分清单Trae 支持在一个会话里连续生成多个文件但直接丢一大段需求容易翻车。更有效的方式是把任务拆成“批量清单”分几次请求玩家角色类移动、跳跃、相机敌人 Actor左右移动、碰撞、踩踏销毁金币 Actor碰撞检测、加分、销毁GameMode / PlayerState全局分数关卡终点 Actor触发下一关UI 控件分数显示。每次在对话里给出一个任务并要求 Trae 输出文件路径。例如任务 3在 Source/MyPlatformGame/Public 生成 MarioCoin.h 在 Source/MyPlatformGame/Private 生成 MarioCoin.cpp。 要求AActor 子类圆形碰撞体被玩家角色触碰后销毁。7.2 如何组织提示词批量生成时目标不要杂。以下是一个可复制的提示词模板我现在做一款横版平台跳跃游戏项目是 UE5 C项目名 MyPlatformGame。 请按以下顺序生成代码 1. AMarioEnemy左右巡逻玩家踩踏后销毁。 2. AMarioCoin球形碰撞玩家 Overlap 后销毁。 3. AMarioGameMode记录 CoinCount提供 AddCoin 函数。 每个文件都放在正确的 Public/Private 目录下。 先输出第 1 个文件我确认后再生成第 2 个。这种“逐个确认”的会话方式既利用了 Trae 的上下文又避免一次生成多个文件后出现类之间互相引用错误。等类之间依赖稳定后再一次性让 Trae 做批量重构。8. 接口 API 与批量任务说明很多人会问Trae 能不能像本地服务一样提供接口严格来说Trae 是 IDE不是一个后端服务不会暴露http://127.0.0.1:xxxx/api这样的接口。这不是缺项而是它的定位问题。如果你想通过程序调用 AI 能力应该去查 Trae 官方是否提供了命令行工具或插件而不是自己在项目里拼接协议。本文的“批量任务”也不是服务端队列而是指 UE5 工程的自动化。例如你想要在关卡里批量放置 20 个金币可以让 Trae 生成 UE5 的 Python 脚本。UE5 自带 Python Editor Script 插件可以在编辑器中批量操作 Actor。下面是一个思路示例具体接口名请以当前引擎版本的 Python API 为准# 批量放置金币 Actor 的示例思路 import unreal # 获取当前关卡 editor_actor_subsystem unreal.get_editor_subsystem(unreal.EditorActorSubsystem) actor_class unreal.load_class(None, /Game/Blueprints/BP_MarioCoin.BP_MarioCoin_C) for index in range(20): location unreal.Vector(index * 200.0, 0.0, 100.0) actor editor_actor_subsystem.spawn_actor_from_class( actor_class, location, unreal.Rotator(0, 0, 0) )如果你用的是纯 C 类可以把actor_class换成AMarioCoin的反射类。这种脚本适合批量创建测试用的关卡道具、地面、金币列比手动拖动高效得多。你的工作流里也可以让 Trae 写 UE5 的批处理命令行例如使用 Unreal Engine 的RunUAT打包脚本。不过这属于自动化范围和普通 Web API 不是一回事建议按项目实际需要决定要不要引入。9. 资源占用与性能观察9.1 Trae 和 UE5 的占用对比Trae 的 AI 能力在云端本地主要消耗是 IDE 编辑器本身。你不需要为 Trae 单独准备一块高配显卡。真正吃资源的是 UE5打开一个 UE5 项目编辑器本身会占几个 GB 内存首次加载 C 类并编译CPU 负载会短时间拉满如果做的是纯 2D 平面游戏并使用 Paper2D渲染负荷通常不高如果场景里开了大量动态光源、反射捕捉、体积雾即使横版游戏也会吃掉不少显存。所以不用在 Trae 上纠结显存而要把注意力放在 UE5 的工程规模上。9.2 编译优化UE5 项目的 C 编译速度是最容易感知的性能瓶颈。Trae 生成代码后你最好遵循以下原则不要一次性生成几百个文件再统一编译要一个模块一个模块验证新类尽量做成轻量 Actor避免大量依赖重型引擎模块周期性地清理Binaries和Intermediate目录但要小心清理后需要重新编译全工程耗时更长如果项目越来越大可以研究 Unity Build、增量编译、远程构建等方案。9.3 观察方法性能观察工具建议UE5 编辑器左下角或Window - Developer Tools - Output Log能看编译日志Windows 任务管理器可以看内存和 CPU 占用GPU 使用率可以用系统自带任务管理器、性能监视器查看游戏运行时用stat unit、stat fps命令观察帧率和耗时。不要轻信“我 4G 显存肯定能跑”这类结论。UE5 对显卡要求随场景复杂度变化很大试验阶段优先降低分辨率、关闭高效果再测试。10. 常见问题与排查方法10.1 问题排查表问题现象可能原因排查方式解决方案Trae 生成的代码编译失败类名、项目宏名占位符没有替换查看编译器报错位置让 Trae 使用实际项目名重新生成代码角色不能移动和跳跃输入映射未配置或 PlayerInputComponent 绑定错了键名打开 Project Settings - Input 检查映射添加 MoveRight 轴和 Jump 动作或改用 Enhanced Input编辑器里找不到新生成的 C 类项目没有重新编译检查 Output Log 有没有编译完成点 Compile 或重启编辑器必要时 Refresh Visual Studio Project角色穿过地面掉落没有碰撞体或碰撞预设错误检查 CapsuleComponent 和地面 StaticMesh 的碰撞设置将地面设置为阻挡角色碰撞体开启阻挡触碰金币没反应Overlap 事件没有触发查两个组件的碰撞预设是否包含 Overlap开启 Generate Overlap Events在构造函数设置碰撞通道镜头不跟随角色没有弹簧臂或相机组件检查角色蓝图组件列表添加 SpringArmComponent、CameraComponent或在 Trae 中重新生成踩敌人不消失碰撞逻辑没区分“顶部”和“侧面”在代码中断言或打印坐标用玩家底部 Z 和敌人顶部 Z 比较或使用带向下矢量的条件判断批量生成后文件路径混乱没有在提示词里限定目录检查生成文件位置新对话重来明确 Public/Private 路径关卡切换后黑屏OpenLevel 调用后没加载新关卡检查关卡名称是否一致确认关卡确实在 Content 目录且名称正确可先测试直接打开目标关卡Visual Studio 编译工具找不到未安装 C 开发负载查看 Visual Studio Installer勾选“使用 C 的游戏开发”后修复/安装10.2 让 Trae 帮你排查问题遇到 UE5 报错时最节省时间的方式是把完整报错信息贴给 Trae后面补充以下是 UE5 编译报错 [把 Output Log 里的错误部分粘贴到这里] 请解释原因并给出修改后的 .h 和 .cpp 文件。Trae 很多时候能直接指出是哪一行、哪个宏、哪个 API 不兼容。但注意如果报错日志特别长建议先截取和项目源码相关的核心部分不要全部堆给 AI否则容易淹没关键信息。11. 最佳实践与使用建议11.1 开发流程建议从一开始就按工程化思路做后面会少踩很多坑。第一先跑通最小链路。先让 Trae 生成一个最简单的AActor子类比如旋转方块。编译通过、蓝图能看到、场景能运行再开始加游戏逻辑。这样能把“环境问题”和“代码问题”分开。第二一个类一个分支。在 Git 里为每个功能建分支Trae 生成代码并编译通过后再合并。万一后续批量修改出问题可以快速回退。第三用统一的命名规则。UE5 规定类前缀Actor 用AObject 用UStruct 用FInterface 用I。在提示词里明确“请以 AMario 开头”Trae 就会跟着这个规则。第四保留最小可运行配置。项目里应该有一个常用入口关卡里面只放地面、玩家、一个金币、一个敌人。这个关卡不要加复杂特效和大量模型专门用来测试新生成的 C 类。11.2 提示词技巧Trae 生成质量和提示词直接挂钩。建议在提示词里写清楚引擎版本UE5 哪一代例如 UE5.3 / UE5.4模块名称项目名和Source下的实际目录父类要继承ACharacter、AActor、UUserWidget还是别的核心功能玩家做什么敌人做什么事件触发方式使用系统是经典输入还是 Enhanced Input输出格式要求输出完整的.h和.cpp并带中文注释。示例你是 UE5 C 专家。当前项目为 MyPlatformGame使用 UE5.4。 请生成 AMarioCoin 类继承 AActor - 球形碰撞组件 SphereComp - 静态网格 MeshComp - 当 AMarioLikeCharacter 触碰到金币时金币销毁并且调用 GameMode 的 AddCoin。 请输出完整代码要求使用中文注释。11.3 版权与合规AI 游戏开发最容易被忽视的是合规问题。Trae 生成的代码本身你要确认是否允许用于商业项目不同工具版本和服务协议可能不同。美术、音效、字体、图片也要来源合法。超级玛丽风格这种“玩法师灵感”和“直接搬运素材”是两回事出内容前宁可多花时间做审查也不要留下版权风险。另外如果要发布到公开平台记得在项目README中记录所有素材来源和授权证明。游戏开发过程中AI 生成的内容只能作为加速器最终质量责任仍然在开发者自己身上。12. 总结与下一步这个方案最值得尝试的点在于你不需要完整背诵 Unreal C API也不用从零手敲重复样板代码。用 Trae 生成第一个ACharacter类并成功编译那种感觉是很直接的它能让你快速把注意力放回玩法设计上。最先应该验证的功能不是“做出完整关卡”而是“生成一个能移动跳跃的角色蓝图”。只要这个链路通了后面加敌人、金币、UI、关卡切换都只是一个一个功能模块的事。最容易踩的坑有三个第一是 VS 编译工具没装好第二是提示词里没写清楚项目名和父类导致代码文件路径错误第三是把多个功能一次性丢给 AI报错后排查困难。这三个坑都能靠“先小后大、逐个验证”的流程避开。接下来可以继续扩展的方向包括用 Enhanced Input 替换旧输入系统、加入敌人 AI、用 GameMode 管理玩家生命和分数、打包 Windows 版本做真机测试。如果你也想试试用 Trae 做 UE5 游戏建议从这篇文章的玩家角色任务开始跑通一个最简单的 Demo再决定要不要继续加系统。建议收藏备用后面遇到报错时排查表可以直接拿来找思路。
返回列表