【Unity】 HTFramework框架(七)StepEditor任务步骤编辑器(上)

更新日期:2019年9月26日。
Github源码:[点我获取源码]

StepEditor模块简介

严格来说,StepEditor只是框架的一个内置工具,他最开始的用途是用来解决一系列冗长的线性/非线性任务,为了实现可视化和降低后期升级的复杂度!意识到了这些问题之后,才产生了写这么一个工具的想法。

如下这个简单的例子,一个常见的任务流程:
1.找到NPC张三。
2.与张三交谈。
3.张三叫你去杀死几只大黄蜂。
(后面可能还会有无限多)…

按照正常人的思维,直接写一个任务列表顺序执行就OK了,所以,StepEditor便是封装了这个过程,在StepEditor中每个任务都有**触发执行三个状态,他执行一系列任务是这样的:

1.StepEditor初始化,并**任务一。
2.任务一获得触发条件。
3.任务一进入执行状态。
4.任务一执行完成**任务二。
5.循环1-4直到所有任务完成

需要注意的是,每个任务只有**后,才能获得触发条件,只有触发条件满足,才能进入执行状态,执行状态会自动完成,并**下一任务。

注意:StepEditor所能做的几个重点,就是编辑任务的**状态操作、编辑任务的触发条件、编辑任务的执行状态操作。

使用StepEditor

创建Step Content Asset

Step Content Asset(步骤内容资源)为StepEditor使用的标准资源,创建方法:
Project界面右键 -> Create -> HTFramework -> StepContentAsset

如下,新创建的TestTask001,其中包含的任务步骤数量为0,点击Open按钮(或双击资源)便可以打开StepEditor窗口编辑此资源:
【Unity】 HTFramework框架(七)StepEditor任务步骤编辑器(上)

打开StepEditor窗口

打开任意一个StepContentAsset资源后,StepEditor初始窗口如下图:
【Unity】 HTFramework框架(七)StepEditor任务步骤编辑器(上)

StepEditor窗口详解

【Unity】 HTFramework框架(七)StepEditor任务步骤编辑器(上)
①.Step Content List(步骤内容列表)
1.这里显示所有的任务步骤,可以进行新建、编辑、移动、克隆、删除等操作。
2.点击任务步骤右方的–>按钮,为选中并编辑此步骤。

②.Step Content Properties(步骤的属性面板)
1.仅当选中一个步骤时,此面板显示该步骤的属性。

③.Camera Control(摄像机控制组件)
1.仅当选中一个步骤时,此面板显示当前场景的摄像机控制组件(Control模块)。

④.Operation Panel(操作编辑面板)
1.仅当选中一个步骤时,此面板显示该步骤的所有操作节点。

⑤.Step Operation Properties(步骤操作的属性面板)
1.仅当选中一个步骤且选中一个操作节点时,此面板显示该操作的属性。

注意:他们之间的逻辑关系如下:
1.①中的每个步骤包含有多个操作
2.②中显示步骤的属性。
3.⑤中显示操作的属性。
4.当步骤处于**状态,且②面板中的属性Trigger被触发,则此步骤的所有操作将会根据④面板的连线规则,从Enter节点进入并依次执行节点,等待②面板中的属性Elapse Time设置的时间(秒)后,自动**下一步骤

步骤的属性面板详解

【Unity】 HTFramework框架(七)StepEditor任务步骤编辑器(上)
当在①面板中选择一个步骤时,②面板则显示此步骤的属性:

1.Name:步骤的名称。

2.GUID:步骤的全局唯一ID。

3.Elapse Time:从步骤的执行状态开始,到自动**下一步骤所经过的时间。

4.Instant:勾选后,忽略Elapse Time时间,瞬间**下一步骤

5.Target:当前步骤的目标。

注意:每个步骤必须有一个目标,该目标会被标识一个全局唯一的GUID,在之后的工作中,你可以随意进行改变目标的父子层级关系、或是重命名等操作,都不会导致这里的目标丢失,除非点击了GUID之后的Clear按钮。

6.Prompt:步骤的详细提示。

7.Ancillary:步骤的附属信息。

8.Operation:步骤的操作节点数量,点击Find按钮可以查找由于拖动原因丢失到窗口以外的操作节点。

9.Trigger:步骤的触发条件。

10.Initial Mode:步骤的初始控制视角。

11.Best View:若已**摄像机控制组件,设置摄像机组件的最佳视角(自由控制模式)。

12.View Offset:若已**摄像机控制组件,设置摄像机注视点的偏移(自由控制模式)。

13.Best Pos:角色最佳位置。

14.Helper:步骤的助手,当一个步骤所要执行的操作过于复杂,无法使用预制的操作节点连线来完成,则可以创建一个助手来帮助执行,助手的规则将在后续讲解。

15.Parameter:步骤的参数,可以为此步骤预设多种类型的参数。

操作的属性面板详解

【Unity】 HTFramework框架(七)StepEditor任务步骤编辑器(上)
当在④面板中选择一个操作节点时,⑤面板则显示此操作的属性:

1.Name:操作的名称。

2.GUID:操作的全局唯一ID。

3.Elapse Time:从操作的执行状态开始,到执行下一操作所经过的时间。

4.Instant:勾选后,忽略Elapse Time时间,瞬间执行到下一操作。

5.Target:当前操作的目标。

注意:每个操作必须有一个目标,该目标会被标识一个全局唯一的GUID,在之后的工作中,你可以随意进行改变目标的父子层级关系、或是重命名等操作,都不会导致这里的目标丢失,除非点击了GUID之后的Clear按钮。

6.Type:操作的类型。

注意:根据操作类型的不同,这里可以在扩展新的操作类型时定制GUI,如上图中的操作类型为Action Args(执行一个带参数的方法),这个方法可以是目标张三上的任意脚本的任意带有一个string参数的方法。

7.Clone:克隆此操作节点,将会复制一个一模一样的节点。

运行时检视面板

在编辑器中运行时将会出现运行时检视面板(Runtime Data),主要用以调试或数据监测,目前面板如下:
【Unity】 HTFramework框架(七)StepEditor任务步骤编辑器(上)
1.Step Count:当前步骤总数。
2.Current Step:当前**的步骤索引,点击Skip按钮可以模拟跳过当前任务步骤。
3.Current Step Name:当前**的步骤名称。
4.Current Step Target:当前步骤目标。
5.Current Step Helper:当前步骤的助手。
6.Disabled Steps:当前未启用的步骤数量。
7.Custom Order:当前存在的自定义顺序。