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

常见的电子商务网站推广方式备案号查询

常见的电子商务网站推广方式,备案号查询,做网站空间备案的职业,九冶建设有限公司网站前言#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.dnsts.com.cn/news/131899.html

相关文章:

  • 网站开发与制作中期报告wordpress本地下载
  • 站长工具一区兰州seo安安网站建设
  • 甘肃平凉建设局网站wordpress网站怎么优化
  • 网站哪家公司做的最好齐齐哈尔企业网站排名优化
  • 做设计挣钱的网站3d报价网站开发
  • 江苏德丰建设集团网站网站开发为什么采取ssh框架
  • 主播网站建设wordpress只有英文版
  • 网站建设需要注意哪些搜索引擎优化简历
  • 重庆公司网站建筑网站接单
  • 用tornado做网站互联网app开发
  • 关于古风的网站建设项目网站建设服务描述
  • 怎么做卡商网站怎么建设商城网站
  • html5网站 欣赏苍南县网站集约化建设
  • 建设网站怎么制作wordpress 黑
  • 建设评标专家在哪个网站怎么通过微博做网站外链
  • 冯提莫斗鱼前在哪个网站做直播建设九九网站
  • asp 网站模板微信怎么做网站的动图
  • 色彩设计网站wordpress页面专题
  • 沈阳网站建设seo优化太原网站建设360
  • 网网站建设与制作婚庆网
  • 上传网站空间南昌网站建设模板合作
  • 工艺品网站怎么做中国社交网站做多外国人的
  • 营销外贸网站建设深圳网络络推广培训
  • 小学门户网站建设怎么建正规网站
  • 网站建设过程总结90设计网图片
  • 网站的seo如何优化蚌埠网站制作公司哪家好
  • 深圳网站设计小程序培训机构网络推广方案
  • 做网站的一般都包维护吗怎么wordpress下载
  • 网站图片代码怎么做的iis7 静态网站
  • 徐州建站软件好看的html页面模板