※ 2019/10/31追記:この記事は古くなっており、最新のバージョンでは動作しない可能性があります。
前回の記事で、アセットの再インポートに対応出来ました。
その際に作成したAssetTypeActionsクラスを使用することで、再インポート以外にも独自のアクションを追加することが出来ます。
オフィシャルの機能では、例えば、Materialの「Create Material Instance」や、Paper2Dプラグインで実装されているTextureの「Create Sprite」「Configure For Retro Sprites」などがあります。
今回は、このようなアセットに対するアクションの実装方法をご紹介します。
1.AssetTypeActionsの拡張
今回は、MyAssetを右クリックしたメニューに「Zero Reset」という項目を追加し、その項目が選択されると、ValueA,ValueB,ValueCが全てゼロで上書きされる、というアクションを作ってみます。
まずはソースコードです。
|
// ↓に"Slate"を追加 PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UnrealEd", "AssetTools", "Slate" }); |
|
class FAssetTypeActions_MyAsset : public FAssetTypeActions_Base { public: //~中略~ virtual bool HasActions(const TArray<UObject*>& InObjects) const override { return true; } virtual void GetActions(const TArray<UObject*>& InObjects, FMenuBuilder& MenuBuilder) override; void ExecuteZeroReset(TArray<TWeakObjectPtr> Objects); }; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
void FAssetTypeActions_MyAsset::GetActions( const TArray& lt; UObject*& gt; & InObjects, FMenuBuilder& amp; MenuBuilder) { auto MyAssetImports = GetTypedWeakObjectPtrs(InObjects); MenuBuilder.AddMenuEntry( LOCTEXT("MyAsset_ZeroReset", "Zero Reset"), LOCTEXT("MyAsset_ZeroResetTooltip", "zero reset this MyAsset"), FSlateIcon(), FUIAction( FExecuteAction::CreateSP( this, & FAssetTypeActions_MyAsset::ExecuteZeroReset, MyAssetImports), FCanExecuteAction() ) ); } void FAssetTypeActions_MyAsset::ExecuteZeroReset(TArray& lt; TWeakObjectPtr& gt; Objects) { for (auto ObjIt = Objects.CreateIterator(); ObjIt; ++ObjIt) { auto Object = (*ObjIt).Get(); if (Object) { Object - > ValueA = Object - > ValueB = Object - > ValueC = 0; Object - > MarkPackageDirty(); } } } |
まず、今回はエディタのGUIへの要素追加がありますので、参照モジュールに”Slate”を追加します。
続いて、前回実装した FAssetTypeActions_MyAssetクラスに、関数を3つ追加します。
HasActions()とGetActions()はFAssetTypeActions_Baseからのオーバーライドで、独自のアクションを追加登録するために記述します。
ExecuteZeroReset()は、メニュー項目が選択された時に呼び出される関数で、ココでアセットの編集を実行します。
GetActions()で、メニュー項目の登録を行います。
引数で受け取ったMenuBuilderに対して、要素を追加します。
注目すべきは MenuBuilder.AddMenuEntry() の第4引数で、ココでExecuteZeroReset()関数が呼び出されるようなDelegateを作成し、メニュー項目に登録しています。
ExecuteZeroReset()では、実際のリセットを行います。
アセットが複数選択されていた場合に対応するため、オブジェクトへの参照はTArrayで渡されます。
値を書き換えた後、MakePackageDirty()で、編集済み状態にしています。これを呼び出しておくことで、ContentBrowser上で「*」マークが付き、セーブが必要な状態であるとシステムに知らせることが出来ます。
実装は以上です。実際にビルドして実行してみましょう。
![](data:image/png;base64,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8XQ1PGXtlltukaOPPlrmmWce8363LLLIInLqqafyuFdffTWfwjY7cc899/AhM98HeOxs3759qePpd1tuuaV8/fXXrDuO43xXeGJvhSCp45nlv/zlL2W33XZjMjnhhBO+l5+TPf744/nMdDy+FRcUO+ywg6y77rrmnTl+aL9vj2fTL7vsslZzHMf5fvDE3srA78KvtdZacsYZZ/CJbnj++vnnny9zzz23rL766hytDh48mM8nv/XWW+nDKDuyzDLL0IbR/pFHHslHu6LNv/71LyZp2K+44grp16+ftShAbK9eveSBBx7gs93xKODLLruMT5EDSy+9tJx77rly88038xnq8847L+1LLrkkp6kjeAwhnqMOcGzEH3DAAewLYBR8wQUXcFYAz2bHNDeodu4todb5gVrHXHnlleXiiy/mZ4mZitgGFzirrbaa7LvvvrzQQjxmC/AAHlDrWM39rB3HcWrhib2VgaQ4fPhwPns9giT79ttvp+f2Lr744vLWW28xebz66qty2GGH0Y5EiJH9tddeKzvttBMf77rjjjvSh3vDuFBAm/vuu0/2228/2nMmTJggzz77rBx88MHpYuH++++XO+64Q+acc0456aSTmADR94cffsjk2xyQFF988UXOQOA2w4knnijXX3+9/OxnP6N/l112afLcm0NT51frmJhB+N3vficXXnghZyjwme++++70H3vssfL000/LRRddJKeffjptkel9Fs35rB3HcWrhib2VgQQ3adIkqxVMnDiRCSry4IMPyuTJk+Wqq66SPn36cMQ4YMAAadeuHZPi2muvLV9++aWstNJKjEcSu/fee/lM96FDh8qiiy5KeyUYqb7zzjtyyimncPQ8aNAg2jGyxX1m9IHzw3GXX355Pka2OQwZMoQl+kECxfmjH4xocZHS1Lk3h6bOr9Yx8ThcJHJczOBzf+2116R3797WY22m91k097N2HMephif2VgZGzR06dLBaAUaJ48ePt1oBEhakR48eTCxt27blI1MhCy20EB+hWklDQwMTaDVwfCS+n//853LppZfKgQceKOussw4vHL744guLEp4LkhuO2xLQz8iRI60m8tFHH8kjjzzS7HOvRVPnV+uYALc0br/9drnmmms4o4CLi+nRks+iqc/acRynGp7YWxmY1sV99i5duphFmGxwTxf3vCtB0sBz2pHckby++eYbTgtHOeussyxy+mCKH4kOYDSLkexdd92VRtD56BwjXEyxwz5u3DieY3MWxyE+X+GPtQM47syee1PnV+uYGHlvvvnmsv/++8s222zDGYrm0NSxHMdxZhZP7K2MYcOGcfr297//PRMQVscj8SBx455vBF/FQlLHveIRI0aw3QsvvMALAqzmRqJdYoklWrRwa9SoURwtb7HFFtK+fXuOTLFgDxcbWCmPc9loo414XExhv/766/L5559z9IoRKxabod1WW21lPTYG/eAeNKb40Q/uP2+22WYzfe5NnV+tY+I4uCjBRQVG23jvORiJL7jggnxPOU0dy3EcZ2bxxN4KwWItJJwrr7ySi8mwEhtfPcM928hyyy0n1113HZPVySefzBE22iAOC8GwIvvQQw+tOq1fCyz4wkh5/fXXlxtvvFHOO+88efnll7noDFP06Hu77baTG264gYkXq8EBppsxusbFCM73vffeo70aOEcsTMPX+NAPkiveZ0vOHYvdsAo/ypprrtnk+dU65nPPPSdvvPEGV7H/+c9/5nvNZ0qwsh/Ju3LxW1PHchzHmVna7LnnntOgVJumdb4fHnroIf5x/z7A16lw77tydOk4/ytwIYeLQcdxWk78tlOByP8D9ucDD9LWnUsAAAAASUVORK5CYII=)
このように、アセットの右クリックメニューの先頭に「Zero Reset」という項目が追加されました。
実行すると、中身のメンバがゼロになり、アセットが編集済み状態になるのが確認出来ると思います。
今回はサンプルということで、非常に簡単なアクションを追加しました。
このように、選択されたアセットを編集するような機能も実装出来ますし、「Create Material Instance」のように選択されたアセットを基に別のアセットを作るようなアクションも実装可能です。
Paper2Dプラグインのように、既存のアセットに対してプラグイン独自のアクションを追加することも可能です。
開発効率向上のためのエディタ拡張の一環として、選択肢に加えて頂ければと思います。
次回はさらなるエディタ拡張です。
アセットをダブルクリックした際に開かれるアセットエディタウィンドウを、自前で実装するための方法をご紹介したいと思います。
[UE4] 独自のアセットを実装する方法(1) アセットクラスの実装
[UE4] 独自のアセットを実装する方法(2) インポートの実装
[UE4] 独自のアセットを実装する方法(3) 再インポートの実装
[UE4] 独自のアセットを実装する方法(4) アセットにアクションを追加する
[UE4] 独自のアセットを実装する方法(5) アセットエディタを実装する
[UE4] 独自のアセットを実装する方法(6) 独自のシリアライズを実装する