uasset python_Blutility 蓝图工具

Blueprint Utilities=Blutility

Blutility使人们能够在编辑器中使用蓝图来制作工具和创建工作流

之前通常在Editor中运行Python脚本来达到自动化操作Editor目的,但编程毕竟需要一定门槛,而蓝图更简单直观,显然是更能被大家接受的方法。

官方文档:

但官方文档较老,里面的一些用法现在已经废弃了。

创建方式

contentbrowser右键,选择EditorUtilities,可以创建EditorUtilityBlueprint和EditorUtilityWidget,后者继承自UMG,因此与一般类进行了区分。

如何使用

创建EditorUtilityObject蓝图,蓝图右键可以执行Run方法

Blutility系统实现

主要相关类

UEditorUtilityObject

EditorUtility的基类,只有一个Run()方法,用蓝图实现。

IEditorUtilityExtension

Interface,代表这个类是Editor中可用的蓝图功能扩展,没有定义任何方法,仅代表一个实现关系。

在leveleditor右键菜单中会去搜索所有继承该Interface的类,然后把可调用的方法列在里面,比如actoraction。

UActorActionUtility

所有actor相关行为功能的基类,有GetSupportedClass方法,表示该Action支持哪些类,不实现的话表示支持所有类。

其子类的方法会在editor中右键一批Actor时出现在菜单中。

UAssetActionUtility

类似UActorActionUtility,是所有asset相关行为功能的基类。

AEditorUtilityActor

EditorOnly actor的基类,有Run()方法。

UEditorUtilityActorComponent

EditorOnly actor component的基类。

UEditorUtilityBlueprint

用于editor功能UBlueprint,编辑、编译前面那些蓝图类。

UEditorUtilityBlueprintFactory

用于editor功能的蓝图工厂,生成UEditorUtilityBlueprint。

UEditorUtilityWidget

用于editor功能的UserWidget,有Run()方法,可以注册到editor的Windows菜单栏。可以通过右键run或者在Windows菜单栏点击打开。

类图:

EditorUtility蓝图创建

UE4首先会创建UEditorUtilityBlueprintFactory,当我们在菜单中创建新的Editor Blutility类时,蓝图工厂就会创建对应蓝图,蓝图类型为EditorUtilityBlueprint。这就是Blutility蓝图与普通蓝图的区别。之后通过编译蓝图,就可以生成我们指定的UClass了。

同理,EditorUtilityWidget蓝图创建方式类似。

UEditorUtilityLibrary

蓝图函数库,暴露一些函数给bluilities使用,比如

GetSelectionSet():获取当前被选择的所有Actor

GetSelectedAssets():获取当前被选择的所有Asset

GetSelectedBlueprintClasses():我们经常需要获取UBlueprint所表示的UClass,该函数可以直接返回所选蓝图生成的UClass

RenameAsset():对资源重命名

示例1 批量checkout

如果要批量checkout大量资源,采用手工一个个操作效率会较低,因此需要自动化方案。

用python实现也不麻烦,但蓝图人人都能上手,门槛更低,我们可以这样做:

第一步,创建一个EditorUtilityObject(当然,创建其他Utility类也可以)

第二步,创建函数CheckoutAssets,并设计蓝图

第三步,在蓝图上右键,选择RunEditorUtilityBlueprint,这样就完成批量checkout了

示例2 选择一批资源,批量改名

如果我们要选择一批资源改名,比如加“DEPREACTED_”前缀,表示这批资源已经被弃用了,就可以使用AssetAction实现:

第一步,创建AssetActionObject,并创建AddPrefix函数,函数接受一个参数

第二步,选择多个asset,右键选择ScriptedActions->AddPrefix

第三步,在弹窗中输入Prefix

然后这些资源就被成功重命名了

示例3 统计场景中某些Actor的数量

如果我们想统计场景中所有luaactor

第一步,创建ActorActionUtility,并创建函数

第二步,场景中在Actor上右键,选择Scripted Actions即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值