mcpField
U
ue5-world-interaction

ue5-world-interaction

github.com/unrealxu开发53349 次安装9 周前更新
代码仓库

关于 ue5-world-interaction

面向 UE5.6–UE5.8 的世界交互设计与排错技能,适用于拾取物和生成的可交互对象。内容涵盖重叠或追踪检测、条件与服务器权威验证、反馈及 Actor 生命周期管理。

主要功能

  1. 01重叠与追踪检测
  2. 02交互条件检查
  3. 03服务器权威交互判定
  4. 04成功与失败反馈
  5. 05Actor 清理与重生管理
  6. 06交互问题排查指导

适用场景

  1. 01实现拾取物交互
  2. 02验证多人游戏交互结果
  3. 03管理已消耗或可复用对象
  4. 04排查交互遗漏或重复触发

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/unrealxu/unrealengine5-skills --skill ue5-world-interaction

安装后在 Claude Code 中输入/ue5-world-interaction确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
references/
pickup-actor-pattern.md
project-adapter.md
spawner-randomization.md

详细介绍

快速入门

  • 定义交互模型:基于重叠检测、基于射线检测,或显式使用按键。
  • 定义参与者集合:拾取参与者、可选的生成器、可选的视觉映射数据资产。
  • 输出从生成到交互处理完成的运行时状态转换。

API 锚点(UE5.6-UE5.8)

  • 检测锚点:
    • USphereComponent、UBoxComponent
    • UPrimitiveComponent::OnComponentBeginOverlap
    • UPrimitiveComponent::OnComponentEndOverlap
    • FHitResult
  • 射线检测锚点:
    • UWorld::LineTraceSingleByChannel(...)
    • UWorld::SweepSingleByChannel(...)
    • UKismetSystemLibrary::SphereTraceSingle(...)
  • 生命周期锚点:
    • AActor::SetActorHiddenInGame(...)
    • AActor::SetActorEnableCollision(...)
    • AActor::Destroy(...)
    • AActor::SetActorTickEnabled(...)
  • 网络锚点:
    • 由服务器验证交互是否成功
    • 复制结果状态以向客户端提供反馈

交互阶段约定

  • 每项交互功能都必须定义:
    • 检测来源(重叠检测/射线检测/使用按键)
    • 资格检查(距离、标签、物品栏/容量、权限)
    • 成功和失败结果载荷
    • 反馈路径(VFX/SFX/UI)
    • 交互后的生命周期策略(销毁/禁用/冷却/重生)
  • 缺少任何一项,交互行为的定义就不完整。

工作流

1) 参与者和组件设置

  • 使用明确的碰撞通道构建根组件、碰撞组件和视觉组件。
  • 定义默认状态(active、cooldown、consumed)以及复制需求。
  • 确保碰撞形状和边界与预期交互距离一致。

2) 检测路径

  • 重叠检测模型:在碰撞组件上绑定重叠开始/结束委托。
  • 射线检测模型:在收到输入请求时执行直线/球体射线检测,并验证命中的参与者/组件。
  • 通过显式通道/配置文件确保检测结果具有确定性。

3) 资格和权限验证

  • 验证目标状态、范围、参与者有效性和游戏条件。
  • 在多人游戏中,修改共享状态前先由服务器验证操作是否成功。
  • 被拒绝时返回结构化的失败原因。

4) 处理交互

  • 成功时:应用效果(授予物品、触发状态变更、开始冷却)。
  • 失败时:保持状态稳定,并发出针对具体原因的反馈。
  • 处理尚未完成时,阻止重入执行。

5) 反馈路径

  • 为成功和失败路径都提供 VFX/SFX/UI 反馈。
  • 将纯外观效果与权威游戏状态变更分开处理。
  • 确保重复的客户端更新不会重复触发反馈。

6) 生命周期和清理

  • 明确选择生命周期策略:销毁、隐藏并禁用碰撞,或通过重生计时器重复使用。
  • 如果存在生成器,则跟踪生成的实例,并在重置/销毁时清理。
  • 不再需要时,禁用休眠交互参与者的 Tick。

约束

  • 在多人游戏中,交互验证必须由服务器权威处理。
  • 明确指定碰撞通道和射线检测响应。
  • 需要确保可复现性时,让生成器随机化保持确定性。
  • 避免在 Tick 中产生不明显的副作用,除非确有必要。
  • 广播所需的成功/失败反馈之前,不要销毁参与者。
  • 同时启用重叠检测和射线检测时,确保两条路径在功能上等效。

故障处理

  • 症状:重叠事件始终未触发。
    • 排查:碰撞是否启用、重叠标志、碰撞通道响应。
    • 修复:启用重叠生成,设置正确的通道响应,并检查组件边界。
  • 症状:射线检测路径未命中明显的目标。
    • 排查:射线检测通道/配置文件和忽略的 Actor 列表。
    • 修复:确保射线检测通道/配置文件一致,并减少对自身/拥有者的不当忽略。
  • 症状:交互触发多次。
    • 排查:缺少进行中状态保护,或委托重复绑定。
    • 修复:添加状态保护,并确保每个组件只绑定一次。
  • 症状:客户端显示成功,但服务器拒绝。
    • 排查:权限检查和 RPC 验证路径。
    • 修复:将最终验证移至服务器,并复制权威结果。
  • 症状:已拾取的物品仍可交互。
    • 排查:生命周期状态和碰撞禁用逻辑。
    • 修复:确认成功后立即禁用碰撞/交互。
  • 症状:生成的可交互对象会随时间泄漏。
    • 排查:生成器的对象追踪记录和重置清理路径。
    • 修复:追踪已生成的实例,并在重新生成周期中销毁/禁用过期实例。
  • 症状:密集交互区域附近出现帧率尖峰。
    • 排查:逐帧射线检测/重叠检测负载,以及不必要的 Tick。
    • 修复:降低轮询频率,根据输入/距离限制射线检测,并禁用空闲 Tick。

交互权限运维

  • 对共享游戏效果,使用经服务器验证的交互结果处理。
  • 在可接受时,仅将客户端预测用于外观反馈。
  • 复制结果状态,而非原始输入洪流。
  • 将冷却/计时器的管理权保留在权威端,以确保多人游戏行为确定。

UE5.6-UE5.8 兼容性说明

  • 上述重叠、射线检测和 Actor 生命周期 API 在 UE5.6-UE5.8 中均保持稳定。
  • 在所有受支持的版本中,优先使用显式碰撞配置文件/通道配置。

升级处理

  • 当设计需要跨会话同步持久化的世界状态时,升级处理。
  • 当系统必须集成 GAS 能力目标规则时,升级处理。

评论

支持 Markdown