UE4 自定义Asset
2017-05-10 17:25
302 查看
1.
首先看一下UML图:
这是一个动画状态机的Asset类型。
class FCreatureAnimStateMachineAssetTypeActions : public FAssetTypeAcctions_Base 这里决定了要创建的Asset的类型。
方法
UClass * FMyCustomStateMachineAssetTypeActions::GetSupportedClass() const
{
return UMyCustomStateMachine::StaticClass();
}
决定了支持的类型。
上面
class FCreatureAnimStateMachineEditor : public FAssetEditortToolkit 定义Asset的界面UI。 资源UI都要继承FAssetEditorToolkit 来进行UI自定义。
2.加载到Eidtor
这里LoadAssetTools 然后RegisterAdvancedAssetCategory ,注册在
右键的选项。
之后 RegisterAssetTypeActions 加载自己定义的Asset类型到子节点。
3. 之后需要定义自己的Factory
class CUSTOMFSMUI_API UMyCustomStateMachineFactory : public UFactory
构造函数中制定SupportClass。
重写FactoryCreateNew 来处理创建Asset操作。 这里在编辑器中创建资源的时候会调用。
经过这三步,已经可以自定义Asset了。
4.打开资源操作还需要在FCreatureAnimStateMachineAssetTypeActions 重写OpenAssetEditor ,
调用 FCreatureAnimStateMachineEditor 来对UI进行处理。
5.自定义布局
这里看最开始的UML图,继承FAssetEditorToolkit 来自定义打开Asset的UI布局。
要自定义蓝图编辑窗口,看下面的UML
这里需要自定义
class UCreatureStatemachineGraph : public UEdGraph 来作为蓝图编辑界面
继续看下面的UML图
在自定义Graph中还需要在构造函数中设置父类的Schema。
这些都设置好,现在可以打开自定义Asset,并且看到蓝图编辑窗口了。
只不过蓝图编辑窗口还需要创建一些状态节点。
首先看一下UML图:
这是一个动画状态机的Asset类型。
class FCreatureAnimStateMachineAssetTypeActions : public FAssetTypeAcctions_Base 这里决定了要创建的Asset的类型。
方法
UClass * FMyCustomStateMachineAssetTypeActions::GetSupportedClass() const
{
return UMyCustomStateMachine::StaticClass();
}
决定了支持的类型。
上面
class FCreatureAnimStateMachineEditor : public FAssetEditortToolkit 定义Asset的界面UI。 资源UI都要继承FAssetEditorToolkit 来进行UI自定义。
2.加载到Eidtor
FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked<FPropertyEditorModule>("PropertyEditor"); PropertyModule.RegisterCustomClassLayout("MyCustomStateMachine", FOnGetDetailCustomizationInstance::CreateStatic(&FMyCustomStateMachineDetail::MakeInstance)); //get asset tools IAssetTools& AssetTools = FModuleManager::LoadModuleChecked<FAssetToolsModule>("AssetTools").Get(); EAssetTypeCategories::Type CreatureAssetCategoryBit = AssetTools.RegisterAdvancedAssetCategory(FName(TEXT("MyCustomAssetCategory")), LOCTEXT("MyCustomAssetCategory", "CustomStateMachine")); AssetTools.RegisterAssetTypeActions(MakeShareable(new FMyCustomStateMachineAssetTypeActions(CreatureAssetCategoryBit)));
这里LoadAssetTools 然后RegisterAdvancedAssetCategory ,注册在
右键的选项。
之后 RegisterAssetTypeActions 加载自己定义的Asset类型到子节点。
3. 之后需要定义自己的Factory
class CUSTOMFSMUI_API UMyCustomStateMachineFactory : public UFactory
构造函数中制定SupportClass。
重写FactoryCreateNew 来处理创建Asset操作。 这里在编辑器中创建资源的时候会调用。
经过这三步,已经可以自定义Asset了。
4.打开资源操作还需要在FCreatureAnimStateMachineAssetTypeActions 重写OpenAssetEditor ,
调用 FCreatureAnimStateMachineEditor 来对UI进行处理。
5.自定义布局
class CUSTOMFSMUI_API FMyCustomStateMachineEditor : public FAssetEditorToolkit { public: FMyCustomStateMachineEditor(); //IToolKitInterface virtual void RegisterTabSpawners(const TSharedRef<class FTabManager>& TabManagerIn) override; virtual void UnregisterTabSpawners(const TSharedRef<class FTabManager>& TabManagerIn) override; //EndIToolKitInterface // FAssetEditorToolkit virtual FName GetToolkitFName() const override; virtual FText GetBaseToolkitName() const override; virtual FText GetToolkitName() const override; virtual FText GetToolkitToolTipText() const override; virtual FLinearColor GetWorldCentricTabColorScale() const override; virtual FString GetWorldCentricTabPrefix() const override; virtual void OnToolkitHostingStarted(const TSharedRef< class IToolkit >& Toolkit) override; virtual void OnToolkitHostingFinished(const TSharedRef< class IToolkit >& TfNodeActionoolkit) override; void InitStateMachineEditor(const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost, class UMyCustomStateMachine* StateMachine);
这里看最开始的UML图,继承FAssetEditorToolkit 来自定义打开Asset的UI布局。
要自定义蓝图编辑窗口,看下面的UML
这里需要自定义
class UCreatureStatemachineGraph : public UEdGraph 来作为蓝图编辑界面
继续看下面的UML图
在自定义Graph中还需要在构造函数中设置父类的Schema。
这些都设置好,现在可以打开自定义Asset,并且看到蓝图编辑窗口了。
只不过蓝图编辑窗口还需要创建一些状态节点。
相关文章推荐
- UE4中自定义碰撞形状和unity3D的区别
- UE4 AssetToolss的基本使用
- ScriptableObject 整理2 :通过自定义编辑器创建对应的asset文件
- UE4 4.13 创建自定义Button
- UE4中使用自定义log
- UE4 项目中怎么导入.uasset文件
- UE4 添加自定义的module
- ue4 添加自定义module 以及editor ui相关
- ue4 资产无法保存问题The asset uasset failed to save
- UE4中自定义的碰撞几何体使用注意事项
- UE4引擎自定义插件导出类定义的简单流程
- assetbundle 对自定义shader的打包
- UE4信息交互-命令行执行自定义事件ConsoleCommand
- MAYA自定义LOD组导入到UE4教程
- UE4 Asynchronous Asset Loading
- 【UE4】 第07讲 【MOBA制作日记】 实现自定义的行走控件
- UE4 新建自定义Map
- UE4 连接自定义服务器
- UE4 4.14自定义角色
- UE4蓝图:自定义鼠标操作.