XR 任务系统

2026 年 10 月 6 日

XR 任务系统的诞生,源于 XR 工业培训中的一个普遍痛点:任务逻辑通常靠大量 if-else 硬编码在代码里,每次改动都是一场慢节奏的工程。行业教员或产品经理想调整一个训练步骤,开发就要改代码、重新打包、再部署——迭代速度被严重拖慢。这款工具把任务逻辑从代码里解放出来,放进可视化的节点图中,让非程序员也能独立配置。

产品概述

XR 任务系统是一款基于 Unity 6 官方 Graph Toolkit 构建的 可视化任务图插件,专为 XR 工业培训 场景打造。用六种语义化节点描述任务逻辑——拖拽、连线,即可完成任务配置。不再需要硬编码的状态机,不再有散落各处的 if-else。

采用干净的 三层分离架构——Editor、Importer、Runtime 完全独立。运行时 零编辑器依赖,打包体积最小化。队列驱动的状态传播算法支持 1000+ 节点 稳定运行,不会栈溢出,从简单的步骤检查到复杂的多分支机务培训都能胜任。

节点类型

六种语义化节点,精心挑选,覆盖 80% 的 XR 培训场景,不多也不少。叶子节点检测条件,中间节点组合逻辑,End 节点判定最终结果。

Counter 计数器
计数触发。成功完成 N 次操作后,节点状态变为 True。
叶子节点
Timer 计时器
时限看门狗。只有在规定时间内完成工作才算成功,超时即失败。
叶子节点
Flag 标记
状态标记。记录某个关键动作或事件是否已经发生。
叶子节点
And 与逻辑
所有输入全部满足才输出 True。对应"做完 A 且做完 B 才能继续"。
中间节点
Or 或逻辑
任一输入满足即输出 True。对应"A 或 B 任一步骤完成即可"。
中间节点
End 终点
唯一根节点。判定任务成功或失败,触发完成事件。
根节点

核心功能

基于 Unity 6 官方 Graph Toolkit 构建的 可视化多分支无序任务图编辑器——不是自造轮子,而是遵循官方标准做法。
实时调试窗口以树状结构展示所有节点状态,绿色表示 True、灰色表示 False。任务跑到哪一步,一眼就能看清,不再需要打日志、打断点。
可干预的调试体验——Counter 一键 +1,Timer 一键启动,任何节点都能强制置 True。跳过前面的步骤,直接测你想测的那一步。
队列驱动传播——1000+ 节点稳定运行,零栈溢出。从简单的步骤检查到复杂的多分支培训,一套系统扛住。
事件式外部接口——一行代码接入你的 XR 逻辑,不需要改架构。
深浅主题自动切换——调试窗口跟随 Unity 编辑器主题自动切换,眼睛不累。

一眼看懂

6
种语义化节点
1000+
节点稳定运行
3
层分离架构
0
运行时编辑器依赖

技术规格

支持 Unity 版本:Unity 6(Graph Toolkit 0.4.0-exp.2 及以上)。
渲染管线:所有管线(不依赖特定 SRP,纯编辑器工具)。
支持平台:Windows、macOS(编辑器端);运行时支持 Unity 所有 XR 平台。
资产格式:.xrtask 脚本化导入,基于图的序列化。
集成方式:C# 事件式 API——挂载组件、加载任务图、订阅事件。

三层分离架构
编辑层(Editor)
可视化节点编辑器 · 拖拽配置任务图 · 内置 Debug 调试窗口
编辑器环境
导入层(Importer)
.xrtask 资产烘焙 · 序列化 · 数据格式转换
构建时运行
运行层(Runtime)
任务运行时引擎 · 事件驱动 · 队列驱动状态传播
玩家设备
Editor → Importer → Runtime · 运行时零编辑器依赖

快速接入

三步搞定,大约五分钟。不需要改架构,挂组件、加载图、订阅事件——就这么简单。

// 1. 获取组件
TaskSystemComponent taskSystemComponent = GetComponent<TaskSystemComponent>();
if (taskSystemComponent != null && taskSystemComponent.Runtime != null)
{
    // 2. 获得运行时
    TaskGraphRuntime runtime = taskSystemComponent.Runtime;

    // 3. 监听事件
    runtime.Completed += (isSuccess, endName) =>
    {
        Debug.Log($"Completed's isSuccess: {isSuccess}, endName: {endName}");
    };

    runtime.NodeStateChanged += (nodeId, nodeName, oldState, newState) =>
    {
        if (oldState == newState) return; // 过滤伪变化
        Debug.Log($"NodeStateChanged's nodeId: {nodeId} , nodeName: {nodeName} , oldState: {oldState}, newState: {newState}");
    };

    runtime.AndProgressChanged += info =>
    {
        Debug.Log($"AndNode.Name: {info.Name}, TrueCount / TotalCount: {info.TrueCount} / {info.TotalCount}, Progress: {info.Progress}");
    };

    if (runtime.TryGetAndProgress("phase_one_complete", out var now))
    {
        Debug.Log($"TryGetAndProgress's phase_one_complete: TrueCount / TotalCount: {now.TrueCount} / {now.TotalCount}, Progress: {now.Progress}");
    }

    // 从 XR 逻辑中驱动节点
    runtime.IncrementCounter("screws_installed");
    runtime.SetFlag("panel_opened", true);
    runtime.StartTimer("phase_one");
}

调试窗口

内置的 Task System Debug 窗口以树状结构实时展示每个节点的状态,支持折叠展开。Counter 节点有 Increment 按钮,Timer 节点有 Start 和 Force 按钮,任何节点都可以强制置 True 以快速验证。窗口还会自动跟随 Unity 编辑器在 深浅主题 之间切换。

性能与可靠性

XR Task System 采用 队列驱动的状态传播 算法,而非递归遍历,即使 1000+ 节点的任务图也能保证 零栈溢出。
运行时程序集 不依赖编辑器——只引用 UnityEngine.CoreModule,打包体积更轻量。
每个节点的状态变化都会触发 事件,方便接入 XR 逻辑、UI 或数据分析系统。

后续规划

扩展节点库,增加空间触发类节点(区域触发、抓取交互)和结构类节点(子任务、序列节点)。
补充常见培训场景的示例场景——从简单步骤检查到机务维修完整流程。
持续吸纳社区反馈,打磨产品细节。

立即体验

源自真实企业级 VR 培训项目的 成熟编辑器工具,亲民定价,轻松上手。

获取 XR Task System

即将登陆 FAB 创意商城,敬请期待。

  在 FAB 查看 敬请期待