创建动态自定义工具面板

此项目将展示如何使用编辑器工具空间和数据表,通过动态程序化的方式来生成好用的工具面板。

图片

图片

介绍

编辑器工具控件需要以下几样东西才能使用。

  • 结构(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命令。

图片

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A+耶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值