当前位置: 首页 > news >正文

网站分析流程wordpress表单统计插件下载

网站分析流程,wordpress表单统计插件下载,效果图网址,烟台建设集团 招聘信息网站前言#xff1a; 为了实现与UserWidget一致的右键添加#xff0c;便有了此章 注#xff1a;这里使用的是UE5.3 目标内容#xff1a; 这里可以参考UserWidget的源码#xff0c;拷贝一份属于自己的就ok#xff08;本篇章只是全改成了属于自己的CommonUserWidget#xff…前言 为了实现与UserWidget一致的右键添加便有了此章 注这里使用的是UE5.3 目标内容 这里可以参考UserWidget的源码拷贝一份属于自己的就ok本篇章只是全改成了属于自己的CommonUserWidget Runtime模块需要添加内容 首先创建一份自己Runtime模块的对象我这取名是UCommonUserWidget .h #pragma once#include Blueprint/UserWidget.h #include CommonUserWidget.generated.hUCLASS(BlueprintType, Blueprintable) class DIVINEPROLOGUE_API UCommonUserWidget : public UUserWidget {GENERATED_BODY() public:} };主要实现内容是UFactory 这里需要创建一个Editor模块添加以下代码 .h //这个创建是因为本着改了都改就创建了一份 #pragma once #include WidgetBlueprint.h #include CommonWidgetBlueprint.generated.h/*** The widget blueprint enables extending UCommonWidgetBlueprint the user extensible UWidget.*/ UCLASS(BlueprintType) class UCommonWidgetBlueprint : public UWidgetBlueprint {GENERATED_BODY() public:UCommonWidgetBlueprint(){} };.h // Copyright Epic Games, Inc. All Rights Reserved.#pragma once#include CoreMinimal.h #include UObject/ObjectMacros.h #include Templates/SubclassOf.h #include Factories/Factory.h #include Engine/Blueprint.h #include CommonUserWidgetFactory.generated.hUCLASS(HideCategoriesObject, MinimalAPI) class UCommonUserWidgetFactory : public UFactory {GENERATED_UCLASS_BODY()// The type of blueprint that will be createdUPROPERTY(EditAnywhere, CategoryWidgetBlueprintFactory)TEnumAsByteenum EBlueprintType BlueprintType;// The parent class of the created blueprintUPROPERTY(EditAnywhere, CategoryWidgetBlueprintFactory, meta(AllowAbstract ))TSubclassOfclass UUserWidget ParentClass;//~ Begin UFactory Interfacevirtual bool ConfigureProperties() override;virtual bool ShouldShowInNewMenu() const override;virtual UObject* FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn, FName CallingContext) override;virtual UObject* FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) override;//~ Begin UFactory Interface private:UPROPERTY(Transient)TObjectPtrUClass RootWidgetClass; };.cpp // Copyright Epic Games, Inc. All Rights Reserved.#include CommonUserWidgetFactory.h #include UObject/Interface.h #include Misc/MessageDialog.h #include Blueprint/UserWidget.h #include Blueprint/WidgetBlueprintGeneratedClass.h #include WidgetBlueprint.h #include Kismet2/KismetEditorUtilities.h #include Modules/ModuleManager.h #include UMGEditorModule.h#include Blueprint/WidgetTree.h #include UMGEditorProjectSettings.h #include ClassViewerModule.h #include Kismet2/SClassPickerDialog.h #include ClassViewerFilter.h #include CommonUserWidget.h #include CommonWidgetBlueprint.h #include Components/CanvasPanel.h#define LOCTEXT_NAMESPACE UCommonUserWidgetFactory/*------------------------------------------------------------------------------UCommonUserWidgetFactory implementation. ------------------------------------------------------------------------------*/class FWidgetClassFilter : public IClassViewerFilter { public:/** All children of these classes will be included unless filtered out by another setting. */TSet const UClass* AllowedChildrenOfClasses;/** Disallowed class flags. */EClassFlags DisallowedClassFlags;virtual bool IsClassAllowed(const FClassViewerInitializationOptions InInitOptions, const UClass* InClass, TSharedRef FClassViewerFilterFuncs InFilterFuncs) override{return !InClass-HasAnyClassFlags(DisallowedClassFlags) InFilterFuncs-IfInChildOfClassesSet(AllowedChildrenOfClasses, InClass) ! EFilterReturn::Failed;}virtual bool IsUnloadedClassAllowed(const FClassViewerInitializationOptions InInitOptions, const TSharedRef const IUnloadedBlueprintData InUnloadedClassData, TSharedRef FClassViewerFilterFuncs InFilterFuncs) override{return !InUnloadedClassData-HasAnyClassFlags(DisallowedClassFlags) InFilterFuncs-IfInChildOfClassesSet(AllowedChildrenOfClasses, InUnloadedClassData) ! EFilterReturn::Failed;}};UCommonUserWidgetFactory::UCommonUserWidgetFactory(const FObjectInitializer ObjectInitializer): Super(ObjectInitializer) {bCreateNew true;bEditAfterNew true;SupportedClass UCommonWidgetBlueprint::StaticClass();ParentClass nullptr; }bool UCommonUserWidgetFactory::ConfigureProperties() {if (GetDefaultUUMGEditorProjectSettings()-bUseUserWidgetParentClassViewerSelector || GetDefaultUUMGEditorProjectSettings()-bUseUserWidgetParentDefaultClassViewerSelector){FClassViewerModule ClassViewerModule FModuleManager::LoadModuleCheckedFClassViewerModule(ClassViewer);// Fill in optionsFClassViewerInitializationOptions Options;Options.DisplayMode EClassViewerDisplayMode::Type::TreeView;Options.Mode EClassViewerMode::ClassPicker;Options.bShowNoneOption false;Options.bExpandAllNodes true;Options.bShowDefaultClasses GetDefaultUUMGEditorProjectSettings()-bUseUserWidgetParentDefaultClassViewerSelector;Options.bShowClassesViewer GetDefaultUUMGEditorProjectSettings()-bUseUserWidgetParentClassViewerSelector;TSharedPtrFWidgetClassFilter Filter MakeShareable(new FWidgetClassFilter);Options.ClassFilters.Add(Filter.ToSharedRef());const TArrayTSoftClassPtrUUserWidget FavoriteWidgetParentClasses GetDefaultUUMGEditorProjectSettings()-FavoriteWidgetParentClasses;for (int32 Index 0; Index FavoriteWidgetParentClasses.Num(); Index){UClass* FavoriteWidgetParentClass FavoriteWidgetParentClasses[Index].LoadSynchronous();if (FavoriteWidgetParentClass FavoriteWidgetParentClass-IsChildOf(UCommonUserWidget::StaticClass())){if (!Options.ExtraPickerCommonClasses.Contains(FavoriteWidgetParentClass)){Options.ExtraPickerCommonClasses.Add(FavoriteWidgetParentClass);}}}if (Options.ExtraPickerCommonClasses.Num() 0){Options.ExtraPickerCommonClasses.Add(UCommonUserWidget::StaticClass());}Filter-DisallowedClassFlags CLASS_Deprecated | CLASS_NewerVersionExists | CLASS_Hidden | CLASS_HideDropDown;Filter-AllowedChildrenOfClasses.Add(UCommonUserWidget::StaticClass());const FText TitleText LOCTEXT(CreateCommonWidgetBlueprint, Pick Parent Class for New Widget Blueprint);UClass* ChosenParentClass nullptr;bool isSuccessful SClassPickerDialog::PickClass(TitleText, Options, ChosenParentClass, UCommonUserWidget::StaticClass());ParentClass ChosenParentClass ? ChosenParentClass : UCommonUserWidget::StaticClass();if (!isSuccessful){return false;}}if (GetDefaultUUMGEditorProjectSettings()-bUseWidgetTemplateSelector){// Load the classviewer module to display a class pickerFClassViewerModule ClassViewerModule FModuleManager::LoadModuleCheckedFClassViewerModule(ClassViewer);// Fill in optionsFClassViewerInitializationOptions Options;Options.Mode EClassViewerMode::ClassPicker;Options.bShowNoneOption true;TArrayTSoftClassPtrUPanelWidget CommonRootWidgetClasses GetDefault UUMGEditorProjectSettings()-CommonRootWidgetClasses;for (int32 Index 0; Index CommonRootWidgetClasses.Num(); Index){UClass* PanelWidgetClass CommonRootWidgetClasses[Index].LoadSynchronous();if (PanelWidgetClass PanelWidgetClass-IsChildOf(UPanelWidget::StaticClass())){if (!Options.ExtraPickerCommonClasses.Contains(PanelWidgetClass)){Options.ExtraPickerCommonClasses.Add(PanelWidgetClass);}}}if (Options.ExtraPickerCommonClasses.Num() 0){Options.ExtraPickerCommonClasses.Add(UCanvasPanel::StaticClass());}TSharedPtrFWidgetClassFilter Filter MakeShareable(new FWidgetClassFilter);Options.ClassFilters.Add(Filter.ToSharedRef());Filter-DisallowedClassFlags CLASS_Abstract | CLASS_Deprecated | CLASS_NewerVersionExists;Filter-AllowedChildrenOfClasses.Add(UPanelWidget::StaticClass());const FText TitleText LOCTEXT(CreateRootWidgetBlueprint, Pick Root Widget for New Widget Blueprint);return SClassPickerDialog::PickClass(TitleText, Options, static_castUClass*(RootWidgetClass), UPanelWidget::StaticClass());}return true; }bool UCommonUserWidgetFactory::ShouldShowInNewMenu() const {return true; }UObject* UCommonUserWidgetFactory::FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn, FName CallingContext) {// Make sure we are trying to factory a Anim Blueprint, then create and init onecheck(Class-IsChildOf(UCommonWidgetBlueprint::StaticClass()));UClass* CurrentParentClass ParentClass;if (CurrentParentClass nullptr){CurrentParentClass UCommonUserWidget::StaticClass();}// If they selected an interface, force the parent class to be UInterfaceif (BlueprintType BPTYPE_Interface){CurrentParentClass UInterface::StaticClass();}if ( (CurrentParentClass nullptr) || !FKismetEditorUtilities::CanCreateBlueprintOfClass(CurrentParentClass) || !CurrentParentClass-IsChildOf(UCommonUserWidget::StaticClass()) ){FFormatNamedArguments Args;Args.Add( TEXT(ClassName), CurrentParentClass ? FText::FromString( CurrentParentClass-GetName()) : LOCTEXT(Null, (null)) );FMessageDialog::Open( EAppMsgType::Ok, FText::Format( LOCTEXT(CannotCreateCommonWidgetBlueprint, Cannot create a Common Widget Blueprint based on the class {ClassName}.), Args ) );return nullptr;}else{if (!GetDefaultUUMGEditorProjectSettings()-bUseWidgetTemplateSelector){RootWidgetClass GetDefaultUUMGEditorProjectSettings()-DefaultRootWidget;}UCommonWidgetBlueprint* NewBP CastCheckedUCommonWidgetBlueprint(FKismetEditorUtilities::CreateBlueprint(CurrentParentClass, InParent, Name, BlueprintType, UCommonWidgetBlueprint::StaticClass(), UWidgetBlueprintGeneratedClass::StaticClass(), CallingContext));// Create the desired root widget specified by the projectif ( NewBP-WidgetTree-RootWidget nullptr ){if (TSubclassOfUPanelWidget RootWidgetPanel RootWidgetClass){UWidget* Root NewBP-WidgetTree-ConstructWidgetUWidget(RootWidgetPanel);NewBP-WidgetTree-RootWidget Root;}}{IUMGEditorModule::FWidgetBlueprintCreatedArgs Args;Args.ParentClass CurrentParentClass;Args.Blueprint NewBP;IUMGEditorModule UMGEditor FModuleManager::LoadModuleCheckedIUMGEditorModule(UMGEditor);UMGEditor.OnWidgetBlueprintCreated().Broadcast(Args);}return NewBP;} }UObject* UCommonUserWidgetFactory::FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) {return FactoryCreateNew(Class, InParent, Name, Flags, Context, Warn, NAME_None); }#undef LOCTEXT_NAMESPACE这样运行起来之后会发现右键内容已经有了但是名字不对类型也不对但是已经能正常创建出来了因为我们还需要创建一个UAssetDefinitionDefault .h // Copyright Epic Games, Inc. All Rights Reserved.#pragma once #include CoreMinimal.h #include AssetDefinitionDefault.h#include AssetDefinition_CommonWidgetBlueprint.generated.hUCLASS() class UAssetDefinition_CommonWidgetBlueprint : public UAssetDefinitionDefault {GENERATED_BODY()public:UAssetDefinition_CommonWidgetBlueprint();virtual ~UAssetDefinition_CommonWidgetBlueprint() override;// UAssetDefinition Beginvirtual FText GetAssetDisplayName() const override;virtual FLinearColor GetAssetColor() const override;virtual TSoftClassPtrUObject GetAssetClass() const override;virtual TConstArrayViewFAssetCategoryPath GetAssetCategories() const override;virtual EAssetCommandResult OpenAssets(const FAssetOpenArgs OpenArgs) const override;virtual EAssetCommandResult PerformAssetDiff(const FAssetDiffArgs DiffArgs) const override;virtual FText GetAssetDescription(const FAssetData AssetData) const override;// UAssetDefinition End };.cpp #include AssetDefinition_CommonWidgetBlueprint.h #include CommonWidgetBlueprint.h #include WidgetBlueprintEditor.h #include Misc/MessageDialog.h #include SBlueprintDiff.h#define LOCTEXT_NAMESPACE AssetTypeActionsUAssetDefinition_CommonWidgetBlueprint::UAssetDefinition_CommonWidgetBlueprint() default;UAssetDefinition_CommonWidgetBlueprint::~UAssetDefinition_CommonWidgetBlueprint() default;FText UAssetDefinition_CommonWidgetBlueprint::GetAssetDisplayName() const {return LOCTEXT(UAssetDefinition_CommonWidgetBlueprint, Common Widget Blueprint); }FLinearColor UAssetDefinition_CommonWidgetBlueprint::GetAssetColor() const {return FLinearColor(FColor(44, 89, 180)); }TSoftClassPtr UAssetDefinition_CommonWidgetBlueprint::GetAssetClass() const {return UCommonWidgetBlueprint::StaticClass(); }TConstArrayViewFAssetCategoryPath UAssetDefinition_CommonWidgetBlueprint::GetAssetCategories() const {static const TArrayFAssetCategoryPath, TFixedAllocator1 Categories { EAssetCategoryPaths::UI };return Categories; }EAssetCommandResult UAssetDefinition_CommonWidgetBlueprint::OpenAssets(const FAssetOpenArgs OpenArgs) const {EToolkitMode::Type Mode OpenArgs.GetToolkitMode();EAssetCommandResult Result EAssetCommandResult::Unhandled;for (UBlueprint* Blueprint : OpenArgs.LoadObjectsUBlueprint()){if (Blueprint Blueprint-SkeletonGeneratedClass Blueprint-GeneratedClass){TSharedRefFWidgetBlueprintEditor NewBlueprintEditor(new FWidgetBlueprintEditor);const bool bShouldOpenInDefaultsMode false;TArrayUBlueprint* Blueprints;Blueprints.Add(Blueprint);NewBlueprintEditor-InitWidgetBlueprintEditor(Mode, OpenArgs.ToolkitHost, Blueprints, bShouldOpenInDefaultsMode);}else{FMessageDialog::Open( EAppMsgType::Ok, LOCTEXT(FailedToLoadWidgetBlueprint, Widget Blueprint could not be loaded because it derives from an invalid class.\nCheck to make sure the parent class for this blueprint hasnt been removed!));}Result EAssetCommandResult::Handled;}return Result; }EAssetCommandResult UAssetDefinition_CommonWidgetBlueprint::PerformAssetDiff(const FAssetDiffArgs DiffArgs) const {const UBlueprint* OldBlueprint CastUBlueprint(DiffArgs.OldAsset);const UBlueprint* NewBlueprint CastUBlueprint(DiffArgs.NewAsset);UClass* AssetClass GetAssetClass().Get();SBlueprintDiff::CreateDiffWindow(OldBlueprint, NewBlueprint, DiffArgs.OldRevision, DiffArgs.NewRevision, AssetClass);return EAssetCommandResult::Handled; }FText UAssetDefinition_CommonWidgetBlueprint::GetAssetDescription(const FAssetData AssetData) const {FString Description AssetData.GetTagValueRefFString( GET_MEMBER_NAME_CHECKED( UBlueprint, BlueprintDescription ) );if ( !Description.IsEmpty() ){Description.ReplaceInline( TEXT( \\n ), TEXT( \n ) );return FText::FromString( MoveTemp(Description) );}return FText::GetEmpty(); }#undef LOCTEXT_NAMESPACE这时候就得到了我们想要的结果 往自己的UserWidget添加测试代码发现能正常反射处理因此此篇幅完成 对别忘记添加Editor模块 UnrealEd,UMGEditor, UMG,AssetDefinition,Kismet,Runtime模块 UMG, 当然完结了也没完全完有人可能比较喜欢像我一样做一些明显的图标便于选中这里只需要添加Style就行 Editor模块 .h // Copyright Epic Games, Inc. All Rights Reserved.#pragma once#include Styling/SlateStyle.h/** Manages the style which provides resources for niagara editor widgets. */ class FDivinePrologueEditorStyle : public FSlateStyleSet { public:static void Register();static void Unregister();static void Shutdown();/** reloads textures used by slate renderer */static void ReloadTextures();/** return The Slate style set for niagara editor widgets */static const FDivinePrologueEditorStyle Get();static void ReinitializeStyle();virtual const FName GetStyleSetName() const override;private: FDivinePrologueEditorStyle();void InitIcons();static TSharedPtrFDivinePrologueEditorStyle DivinePrologueEditorStyle; };.cpp // Copyright Epic Games, Inc. All Rights Reserved.#include DivinePrologueEditorStyle.h #include Styling/SlateStyleMacros.h #include Styling/SlateStyleRegistry.hTSharedPtrFDivinePrologueEditorStyle FDivinePrologueEditorStyle::DivinePrologueEditorStyle nullptr;void FDivinePrologueEditorStyle::Register() {FSlateStyleRegistry::RegisterSlateStyle(Get()); }void FDivinePrologueEditorStyle::Unregister() {FSlateStyleRegistry::UnRegisterSlateStyle(Get()); }void FDivinePrologueEditorStyle::Shutdown() {Unregister();DivinePrologueEditorStyle.Reset(); }const FVector2D Icon8x8(8.0f, 8.0f); const FVector2D Icon12x12(12.0f, 12.0f); const FVector2D Icon16x16(16.0f, 16.0f); const FVector2D Icon20x20(20.0f, 20.0f); const FVector2D Icon32x32(32.0f, 32.0f); const FVector2D Icon40x40(40.0f, 40.0f); const FVector2D Icon64x64(64.0f, 64.0f);FDivinePrologueEditorStyle::FDivinePrologueEditorStyle() : FSlateStyleSet(DivinePrologueEditorStyle) {FSlateStyleSet::SetContentRoot(FPaths::ProjectContentDir() / TEXT(StyleTextures));FSlateStyleSet::SetCoreContentRoot(FPaths::ProjectContentDir() / TEXT(StyleTextures));InitIcons(); }void FDivinePrologueEditorStyle::InitIcons() {Set(CommonUserWidget.Icon, new IMAGE_BRUSH(Icon, Icon64x64)); }void FDivinePrologueEditorStyle::ReloadTextures() {FSlateApplication::Get().GetRenderer()-ReloadTextureResources(); }const FDivinePrologueEditorStyle FDivinePrologueEditorStyle::Get() {if(!DivinePrologueEditorStyle.IsValid()){DivinePrologueEditorStyle MakeShareable(new FDivinePrologueEditorStyle());}return *DivinePrologueEditorStyle; }void FDivinePrologueEditorStyle::ReinitializeStyle() {Unregister();DivinePrologueEditorStyle.Reset();Register(); }const FName FDivinePrologueEditorStyle::GetStyleSetName() const {static FName StyleName(DivinePrologueEditorStyle);return StyleName; }这是我的路径 当然创建之后需要在模块启动时候注册它 在UCommonUserWidgetFactory里面重载下面方法返回我们Style里面对应的图片 virtual FName GetNewAssetThumbnailOverride() const override{return TEXT(CommonUserWidget.Icon);}
http://www.pierceye.com/news/508110/

相关文章:

  • 南宁网站建设公司seo优化武鸣住房和城乡规划建设局网站
  • 在线制作网站门户站模板
  • 邵阳网站建设推广56m做图片视频的网站是什么
  • 如何提高网站的点击率域名空间网站推广
  • 上海松江做网站建设wordpress 拒绝连接
  • 有免费的个人网站吗富德生命人寿保险公司官方网站保单服务
  • 网站备案 子域名网页视频制作软件
  • 空间 网站网站建设哪个好
  • 公司网站域名价格云南免费网站建设
  • 网站跳转域名不变常见网站架构
  • 山东省建设厅电工证查询网站网站标题的选择
  • 网站建设是属于软件吗电话销售哪里找客户电话
  • 用vue做网站的实例网站制作郑州
  • 五个网站想自己在家做外贸网站
  • 收费的电影网站怎么做网页设计图片的应用
  • 班级网站建设步骤橘子皮主题wordpress
  • 网站模板源文件网站制作需求文档
  • 青岛注册公司网站建网站需要那些步骤
  • 深圳做网上商城网站小蘑菇网站建设软件
  • 广州住建网站网站空间购买价格
  • 金华永康网站建设公司做网站的优点
  • 有免费的微网站制作吗瑞安哪里有培训做网站的
  • 苏州住房和城乡建设局网站wordpress中文书
  • 盐城市滨海县建设局网站wordpress 4.8.1 漏洞
  • 荆州市城市建设投资开发有限公司网站百度人工服务24小时
  • 永久域名购买昆明网站建设优化企业
  • 自适应网站模板下载网页设计培训哪好
  • 做门窗网站便宜的vps租用网站
  • 龙岗附近公司做网站建设多少钱公司行业类型有哪些
  • 188旅游网站管理系统源码做外贸有那些网站平台