Fungus 的一个基本概念是Block(块)。Block 包含您的 Fungus 命令,并位于流程图内。
检查Block属性
流程图内有Block。Block是存储真菌命令的地方。每个Block可以包含 1 个或多个Fungus命令:
要检查Block的属性,请执行以下操作:
- (设置)创建Fugus Flowchart。
- 单击以选择新流程图中的默认块。您应该看到块的属性显示在检查器窗口中:
设置块名称
使用多个块时,以有意义的方式命名每个块非常重要。要重命名块,请执行以下操作:
- (设置)创建真菌流程图。
- 单击选择新流程图中的默认块。选定的块具有绿色轮廓。
- 您应该看到块的属性显示在检查器窗口中:
- 在检查器中,将块名称属性的文本更改为“Say Hello”。
- 您现在应该看到该块已在流程图窗口中重命名:
- 现在在 Inspector 窗口的 Description 属性中添加有关 Block 的详细描述:
注意:块名称显示在 Fungus 其他各个部分中可供选择的下拉列表中,因此您可能希望使用类别来命名它们。在块名称中放置“/”将导致下拉列表将内容收集到类别中。
创建一个块
要创建新的块,请执行以下操作:
- (设置)创建一个真菌流程图(或查看当前项目的流程图)。
- 单击 Fungus Flowchart 窗口左上角的添加新块按钮(加号“+”):
- 应该已将新块添加到您的流程图中(默认名称为“新块”或“新块 1/2/3 等”,因此每个名称都是唯一的)
注意 - 为块选择一个有意义的名称的最佳时机是在创建新块之后...
删除区块
要从当前流程图中删除块,请执行以下操作:
- (设置)创建一个真菌流程图(或查看当前项目的流程图)。
- 右键单击要删除的块,然后选择菜单
Delete
::
- 现在应该已从流程图中删除该块:
复制区块
要从当前流程图复制(克隆/制作精确副本)某个块,请执行以下操作:
- (设置)创建一个真菌流程图(或查看当前项目的流程图)。
- 右键单击要复制的块,然后选择菜单
Duplicate
::
- 现在应该已经将块的副本添加到流程图中(在重复项的名称后附加了“(副本)”):
注意 - 选择一个有意义的名称的最佳时机是在复制一个块之后立即...
移动方块
要在流程图窗口中移动/重新排列块,请执行以下操作:
- (设置)创建一个真菌流程图(或查看当前项目的流程图)。
- 通过单击鼠标左键并拖动来移动块:
- 释放鼠标按钮时,块将保留在被拖动的位置:
3 种类型的 Block
真菌流程图直观地区分了三种不同的块行为:
- 事件块-蓝色圆角矩形(由事件触发的块执行)
- 分支块 - 橙色六边形(将控制权传递给 2 个或更多其他块,而不是事件块)
- 标准块 - 黄色矩形(无事件,将控制权传递给 0 或 1 个其他块)
1:事件块-蓝色圆角矩形
Fungus 决定何时开始执行块内的命令的一种方法是块是否定义了执行事件。如果块选择了任何可能的执行事件(例如游戏开始、收到消息、精灵拖动完成、按下键等),则该块将显示为蓝色圆角矩形:
我们可以看到,每个新流程图创建的默认块都会自动定义游戏开始执行事件,因此这个默认块总是显示为事件块。
注意:具有执行事件的块将始终作为事件块出现在流程图中,无论其命令是否包含菜单或对 2 个或更多块的调用)。换句话说,就流程图的外观而言,事件块的显示将覆盖分支块的显示。
2:分支块-橙色六边形
如果某个块不是事件块,并且其命令包括调用和/或菜单命令以执行 2 个或更多其他块中的命令,则在流程图窗口中,该块将显示为分支块,视觉上呈现为橙色六边形。
3:标准块-黄色矩形
如果一个块既不是事件块也不是命令块,那么它就是标准块,并且会显示为黄色矩形。
块之间的连接
整个场景的逻辑很少能全部放入一个块中,因此我们需要让一个块将执行控制权传递给其他块的方法。有几种方法可以做到这一点,最常见的是:
- 呼叫命令
- 菜单命令
使用调用命令执行另一个块中的命令
调用命令告诉 Fungus 开始执行命名块中的命令。有几种方法可以做到这一点,我们可以告诉 Fungus 完全停止当前块中的执行,并将控制权交给命名块。我们还可以告诉 Fungus 完成命名块中的所有命令,当它们完成后,继续执行当前块中任何剩余的命令。最后,也许是最复杂/最精致的技术,我们可以告诉 Fungus 开始执行命名块中的命令,同时继续执行当前块中的剩余命令。
要将控制权传递给另一个块,并停止执行当前块中的命令,请执行以下操作:
- (设置)如果您还没有这样做:创建一个新场景,向场景中添加一个真菌流程图,然后选择流程图中的块。
- 将此块重命名为“开始”。
- 向“开始”块添加一个带有故事文本“我在开始”的说命令。
- 向流程图中添加一个名为“Block2”的新块。
- 向块“Block2”添加一个带有故事文本“我在 Block2 中”的说命令。
- 通过选择菜单添加到块“开始”呼叫命令
Flow | Call
::
- 选择此调用命令后,在检查器中从属性目标块
的块列表中选择块2 :
- 注意:我们将保留目标流程图
(无)的默认值,即当前流程图。
- 注意:我们将保留“调用模式
停止”的默认值,这意味着一旦开始执行被调用的块,当前块(开始)中的执行将停止。
- 现在,您应该在流程图窗口中看到一个箭头,将“开始”块与“块 2”块连接起来。这直观地告诉我们(游戏开发者),“开始”块中存在一个调用或菜单命令,它告诉 Fungus 执行“块 2”块中的命令:
执行另一个块
让我们使用上面的 Say 命令来提出一个棘手的数学问题,并通过为用户提供“正确”和“错误”答案的选择来演示 Menu 命令。Menu 命令将控制权转移到另一个块 - 因此我们需要添加 2 个新块来对应这 2 个答案。执行以下操作:
- (设置)创建一个新场景,在场景中添加一个Fungus Flowchart,并在Flowchart中选择Block。
- 将流程图中的块重命名为“问题”。
- 创建一个“说”命令,用故事文本
来询问问题:“2 + 2 等于多少?”。
- 取消选中“等待点击”复选框(这样我们就可以在 Say 命令显示问题后立即看到菜单选项):
- 创建一个名为“正确”的新块,其中包含一个Say
命令,文本为“做得好,你数学很好!”。单击流程图窗口中的加号按钮,向流程图添加一个新块,将其重命名为“正确”,然后添加该 Say 命令:
- 选择“问题”块,然后通过单击检查器中的加号添加命令按钮并选择菜单:来添加菜单命令
Narrative | Menu
。
- 在检查器窗口的上半部分选择这个新的菜单命令(绿色),将文本设置为目标块
“是”,并将
设置为新的“正确”块:
- 现在您应该看到在流程图窗口中命令的‘流程’如何从块“hello”更改为块“Correct”:
- 添加第二个名为“错误”的新块,其中包含一个带有文本“运气不好,或许可以考虑非数学的职业道路...”的 Say 命令。
- 现在我们需要在“你好”块中添加另一个菜单命令,为用户提供数学问题的“否”答案,如果他们不同意 2 + 2 = 4,则将控制权移交给“错误”块。选择“你好”块,然后添加菜单命令。在检查器窗口的上半部分选择此新菜单命令(绿色),将文本设置为目标块
“否”,将
设置为新的“错误”块。
- 现在您应该在流程图窗口中看到“hello”块如何将控制权传递给“正确”块或“错误”块 - 具体取决于用户选择的菜单答案。
- 运行场景,您应该会看到屏幕底部出现“Say”问题,屏幕中间还会出现两个菜单按钮“是”和“否”。单击“是”将运行“正确”块的命令,单击“否”将运行“错误”块的命令:
突出联系
在检查器窗口中,如果您选择一个调用或菜单命令(执行同一流程图中另一个块中的命令),那么您将看到两个块之间的箭头以绿色突出显示:
设置事件处理程序
事件是声明何时开始执行块中的命令的一种方式。典型事件包括:
- 游戏开始
- 已启用流程图
- 收到消息
- 按下的键(向上 / 向下 / 重复)
- 精灵点击/拖放交互
用于定义块何时开始执行的最常见事件当然是游戏开始事件。每个新流程图都会自动以一个空块开始,该块被定义为在游戏开始时开始执行:
要更改为块定义的事件,或者为没有事件的块分配事件,请执行以下操作:
- 在流程图窗口中选择块。
- 在 Inspector 窗口中,对于Execute On Event
属性,从弹出菜单中选择所需的事件: