此项目将展示如何使用编辑器工具空间和数据表,通过动态程序化的方式来生成好用的工具面板。
介绍
编辑器工具控件需要以下几样东西才能使用。
-
结构(Structure)
-
数据表(Data Tables)
-
编辑器工具控件(Editor Utility Widgets)
-
构建工具
结构
结构基本上就是数据表中数据类型的大纲,比如哪些字段可用于输入数据。在结构的布局中,一般会有一个名称和一种数据类型。
数据表
数据表会使用上面的结构作为添加数据的基础,其中每个项目都包含基础结构的所有元素,这一点和其他关系数据库的设置类似。不过需要注意的是,数据表是只读资产,并不能动态编辑。虽然我们可以设计一些变通的方法,不过本教程不会演示。
编辑器工具控件
编辑器工具控件是在编辑器模式下执行蓝图的GUI。它们不是游戏内的接口,更多是为游戏开发(而不是游戏玩法)提供功能。
编辑器工具控件(简称EUW)可以包含各种按钮、滑块、图像和基于文本的数据。因此它们在项目开发周期中非常适合用于高效率的工具构建。
构建工具
在为美术师、开发者和程序员创建工具时,上面三样东西都非常好用。在本教程中,我们将探讨如何将这些元素结合在一起,创建一个带有按钮的工具面板,并且这些按钮可以执行存储在数据表中的python脚本。我们开始吧。
设置结构
首先要在内容浏览器中单击鼠标右键,然后选择“蓝图(Blueprints)”->“结构(Structure)”
在结构编辑器中添加一些变量和类型,这里我们需要ToolName (String)、ToolIcon (Texture2D)以及ToolScript (String)。
创建数据表
创建结构以后,我们要创建数据表并添加数据行。请注意,你还可以通过csv格式的文件从外部表格中导入数据并制作数据表。
设置动态工具按钮
为了填充我们的工具面板,我们必须创建一个按钮,并作为生成的所有按钮的模板。
在内容浏览器中单击鼠标右键,然后选择“编辑器工具(Editor Utilities)”->“编辑器工具控件(Editor Utility Widgets)”
在本示例中,我们会创建一个文本元素、一个按钮、一个图标图像,并且全都在一个垂直框容器中。
每个动态元素都需要设置为变量,并且与结构绑定。要绑定这些元素,必须在结构类型的图表中创建一个结构变量。
在本示例中,变量ItemDetails就被设置为结构,并且命名为S_ToolBar,这个就是我们之前创建的结构,应该可以在列表中轻松找到。
在参数的细节面板中,每个元素的绑定都可以通过下拉菜单连接到结构。
在图表中,“Event Construct”事件可以在动态创建按钮时正确填入元素。
图表中还有一个关键,那就是“OnClicked”事件,它会使用“Call Tool Cmnd”派发器与主工具面板的部件通信,并使用“Row”列的名称作为按钮的ID。
自定义工具架
在内容浏览器中单击鼠标右键,新建一个编辑器工具控件。在我们的设计方案中,还有几个组件需要设置。首先是加载按钮,功能是用最新的数据表条目来刷新面板。下面是一个包含“UniformGridPanel”的滚动框,这个面板可以动态填充,并且会在细节面板中被设置为变量。
完整的控件图表。
单击Load Tool Bar按钮后,Custom Tool Shelf的图表就会运行,它会从数据表中收集数据,并使用总行数作为生成的按钮数。
这里的每个工具按钮都会调用“Create EUW ToolBtn 2 Widget”函数,并在变量Button ID中输入当前的索引号。
图表的另一部分要将“Button Clicked”事件与“Tool Cmnd”连接,这样就可以将每个按钮与Button ID关联起来,从而关联到数据表的具体行,之后将数据表拆分成各个列,再执行Button ID的Python命令。