编辑器扩展_UE4编辑器扩展

801853b832529a74492eb1dbf09a7760.png

在UE的编辑器中,我们可以通过一些简单的操作在ContentBrowser中创建并编辑一些对象(即资源).

  • 在ContentBrowser空白处单击右键创建资源.
  • 在ContentBrowser选中一个或多个资源,右键从中创建新的资源.
  • 自定义特定资源资源编辑器(双击资源时打开的窗口)

参照Paper2D插件, 假设我们需要实现一个播放Texture序列的功能, 即将一系列的序列帧图片导入UE4中, 以指定的频率播放它. 这里我们关注的是如何表示这些序列帧图片资源, 通常一段序列有上百张, 一种直观的想法是用一个数组按顺序存下这些图片, 但不会有人想一张张地在蓝图中加到这个数组中!

因此, 我们需要更快捷的方式!

1. 创建资产类——UObject

我们可以将这种资源的表示抽象为一个UTexturePlayer类, 显然它派生自UObject,这样就可以在编辑器中对它进行管理.

/**
 * A object to play texutre sequence
 */
UCLASS(BlueprintType)
class  YOURMODULENAME_API UTexturePlayer : public UObject
{
	GENERATED_BODY()
public:
	UPROPERTY(BlueprintReadWrite, EditAnywhere)
		TArray<class UTexture2D*> SourceTextures;
    
    // other play function ... ...
};

2. 创建资产对应的工厂——UFactory

UE的Editor中, 创建资源通常都是通过UFactory, 对每一个希望在编辑器的ContentBrowser中创建的资源, 都必须实现一个对应的UFactory.

/**
 * Implements a factory for TexturePlayer objects.
 */
UCLASS(hidecategories=Object)
class UTexturePlayerFactoryNew
	: public UFactory
{
	GENERATED_UCLASS_BODY()

public:
    // Selected Textures
	TArray<class UTexture2D*> InitTextures;

	//~ UFactory Interface
    // 实现这个之后, 在UE4.24及之前,就会在Create Advanced Asset中的Miscellaneous分类中出现创建按钮,点击即会调用这个函数.
	virtual UObject* FactoryCreateNew(UClass* InClass, UObject* InParent, FName InName, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) override;

	/** Returns true if this factory should be shown in the New Asset menu (by default calls CanCreateNew). */
	virtual bool ShouldShowInNewMenu() const override;

	virtual FText GetDisplayName() const override;

};
// 关键部分
UObject* UTexturePlayerFactoryNew::FactoryCreateNew(UClass* InClass, UObject* InParent, FName InName, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn)
{
	UTexturePlayer* NewTexturePlayer = NewObject<UTexturePlayer>(InParent, InClass, InName, Flags | RF_Transactional);

	NewTexturePlayer->SourceTextures = InitTextures;

	return NewTexturePlayer;
}

由于UFactory是派生自UObject的,所以我们不必手动注册它, 编辑器会自动搜集所有的Factory

3. 定义资产在编辑器中的外观——IAssetTypeActions

IAssetTypeActions主要定义和这种资产本身相关的东西, 比如缩略图, 颜色, 分类 以及 在ContentBrowser中右键单击它的Action

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值