简单的用于更改选定静态网格资产上的材质的脚本化资产操作。 用于批量编辑选定的灯光Actor属性的脚本化Actor操作。
首先,创建一个新的编辑器实用工具蓝图资产,该资产的父类是AssetActionUtility。
您可以在函数的“详细信息”面板中设置“类别”,以便在子菜单中组织这些功能。两个函数将设置相同的类别名称。
注:您可以设置描述字段来覆盖脚本操作的工具提示!(默认情况下与函数名称一致)
现在,将以下蓝图片段添加到这两个函数中。请注意,您可以在“设置材质”节点中任意修改材质。本示例使用了引擎附带的简单材质,资产设置如下:
/Script/Engine.Material'/Engine/MapTemplates/Materials/BasicAsset03.BasicAsset03'为绿色材质。
b.脚本化Actor操作
脚本化Actor操作与脚本化资产操作的设置工作流程基本相同。以下是创建简单灯光自定义实用工具的不同步骤。
编译并保存您的蓝图,然后添加并选择一个或多个灯光Actor(这适用于任何以Light类为父类的灯光类型)。
在执行脚本化Actor操作时,您在函数属性面板中添加的每个可编辑输入将在弹出窗口中显示。
注:脚本化资产操作也具有此功能!
2.编辑器实用工具控件
a.编辑器实用工具控件
首先,在内容浏览器中创建编辑器实用工具控件资源。
一旦UI布局准备就绪,您就可以移动到编辑器实用工具控件的图表部分。首先创建一个函数来处理所有的灯光创建逻辑。
完成此操作后,编译并保存您的编辑器实用工具控件。
然后,您可以使用资产上的右键菜单运行它。
有关编辑器实用工具控件的详细文档,请访问以下链接:
https://dev.epicgames.com/documentation/en-us/unreal-engine/editor-utility-widgets-in-unreal-engine
3.使用编辑器实用工具蓝图修改菜单
a.定制化主菜单
Ⅰ.添加菜单
最重要的字段是“菜单”,它定义了您的菜单项在什么地方。其“名称”将是菜单的内部名称(后续步骤的重要属性),“标签”是菜单的显示名称。
编译并保存蓝图后,我们现在可以考虑执行我们创建的“运行”事件来注册菜单项。为此,您需要将以下代码段添加到DefaultEditorPerProjectUserSettings.ini配置文件中(需要替换资产的路径和名称以匹配您的项目!):
[/Script/Blutility.EditorUtilitySubsystem]
#ToolMenu scripts to run on startup
#Menu Object for the Main Menu
+StartupObjects=/Game/BlueprintUtilities/ToolbarEditorUtility/ToolMenu_TestMenu.ToolMenu_TestMenu
Ⅱ.添加菜单项
为您的“运行自定义事件”添加一个“覆盖”功能(在新蓝图中仍然需要!)。然后覆盖“执行”功能。
您可以为“In Blueprint”变量使用任何您想要的编辑器实用工具控件。对于此例,您将使用本教程贴出的项目中提供的一个简单的控件。
请注意“菜单”属性现在如何引用LevelEditor.MainMenu.TestMenu...这是正确的!“菜单”是指菜单的层次结构。
最后一步是将StartupObject添加到配置文件中。对于您的第一个菜单启动对象,它应该看起来像以下代码片段:
[/Script/Blutility.EditorUtilitySubsystem]
#ToolMenu scripts to run on startup
#Menu Object for the Main Menu
+StartupObjects=/Game/BlueprintUtilities/ToolbarEditorUtility/ToolMenu_TestMenu.ToolMenu_TestMenu
#Menu Entry Object for the TestMenu above
+StartupObjects=/Game/BlueprintUtilities/ToolbarEditorUtility/ToolMenu_TestEntry.ToolMenu_TestEntry
现在,您如果重新启动引擎,应该会在自定义菜单中看到一个按钮。
由于您添加了在单击按钮时生成编辑器实用工具控件的逻辑(通过“事件执行”函数覆盖),因此单击按钮将打开控件的新实例。
下一节将介绍如何将按钮直接添加到您选择的工具栏部分。
b.添加工具栏按钮
除了向主工具栏添加元素外,您还可以向其他工具栏添加按钮。
在“编辑菜单”窗口中,查看菜单的“名称”属性:这将被用于EditorUtilityToolMenuEntry Editor实用程序蓝图中的“菜单”属性。对于辅助工具栏,您需要使用的菜单名称是LevelEditor.SecondaryToolbar。
现在您已知菜单名,请输入命令行ToolMenus.Edit 0以禁用编辑模式。
这一次,需要对“数据属性”进行更多修改。
在数据中输入的第一个重要属性是“菜单”。使用之前的名称“LevelEditor.SecondaryToolbar”。
“名称”、“标签”和“工具提示”都可以根据您的喜好按需修改。
对于“样式名称”和“小样式名称”字段,您需要打开“纹理图集可视化工具”,检查要使用哪个图标以及它有什么名称(在本例中,“样式名称”和“小样式名称”将设置为相同的图标)。
纹理图集可视化工具可通过“工具”->“调试”菜单中的“控件反射器”访问。
填入“样式名称”和“小样式名称”字段后,对“工具菜单项”进行的最后一次更改是将其“菜单项类型”修改为“高级”部分中的“工具栏按钮”。
现在,您可以继续使用蓝图的图表逻辑了!与所有其他菜单项对象一样,您需要按如下方式添加运行逻辑:
即将大功告成...但请您不要忘记在DefaultEditorPerProjectUserSettings.ini中将新的编辑器实用工具蓝图添加为“启动对象”!
[/Script/Blutility.EditorUtilitySubsystem]
#Menu Entry Button for the Secondary Toolbar
+StartupObjects=/Game/BlueprintUtilities/ToolbarEditorUtility/ToolMenu_SecondaryToolBarButton.ToolMenu_SecondaryToolBarButton
4.在编辑器启动时运行编辑器实用工具
对于此示例,您可以在蓝图图表中以如下方式将“打印字符串”节点添加到“事件运行”中。
在项目的config文件夹中创建一个名为DefaultEditorPerProjectUserSettings.ini的配置文件,并向其中添加以下代码段(要确保文件夹层次结构与您的项目匹配!):
[/Script/Blutility.EditorUtilitySubsystem]
#Editor Utility script to run on startup
+StartupObjects=/Game/BlueprintUtilities/StartupUtilityScript/EUO_StartupScript.EUO_StartupScript
现在,每次在编辑器中打开项目时,都会运行您的EUO_StartupScript蓝图。
:: Copyright Epic Games, Inc. All Rights Reserved
:: Instructions: Update the following paths to point to your UE executable and uproject file
SET UE5_PATH=d:\EpicGames\UE_5.4\Engine\Binaries\Win64\
SET PROJECT=%~dp0EditorUtilitySamples.uproject
%UE5_PATH%\UnrealEditor-Cmd.exe %PROJECT% -nosplash -nocontentbrowser -nopause -Unattended -NullRHI Log=HeadlessExample.log -ini:EditorPerProjectUserSettings:[/Script/Blutility.EditorUtilitySubsystem]:StartupObjects=/Game/BlueprintUtilities/StartupUtilityScript/EUO_HeadlessStartupScript.EUO_HeadlessStartupScript
PAUSE
此示例运行编辑器实用工具对象EUO_HeadlessStartupScript(与您在上一章中创建的EUO_StartupScript相同)。打开编辑器在运行.bat脚本时创建的HeadlessExample.log日志文件时,您应该能够搜索“无界面模式”并找到蓝图在什么时候开始运行的。
如果您使用的是本教程附带的项目,则示例的.py脚本位于/ReditUtilitySamples/Python目录中。
要填写的数组称为“启动脚本”,位于上述项目设置中相同的“插件-Python”部分。
上面示例中的StartupScriptExample.py脚本在编辑器启动时加载一个关卡,并使用以下代码段:
import unreal
levelManager = unreal.get_editor_subsystem(unreal.LevelEditorSubsystem)
startupLevel = levelManager.load_level('/Game/BlueprintUtilities/StartupUtilityScript/LevelToLoadOnStartup')
c.在蓝图中执行Python命令
Python的实现增加了对从蓝图图表执行Python命令的支持。您可以使用“执行Python命令”节点运行Python代码片段或.py脚本,如下所示:
近期焦点
扫描下方二维码,关注后点击菜单栏按钮“更多内容”并选择“联系我们”获得更多虚幻引擎的授权合作方式和技术支持。
长按屏幕选择“识别二维码”关注虚幻引擎
“虚幻引擎”微信公众账号是Epic Games旗下Unreal Engine的中文官方微信频道,在这里我们与大家一起分享关于虚幻引擎的开发经验与最新活动。