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

同城新闻app有哪些网站优化效果

同城新闻app有哪些,网站优化效果,表格网站怎么做,余姚做网站设计的公司目录 了解相关的函数 第一种做法:自定义添加选择资产的前缀或后缀 代码 效果 第二种做法:通过映射来获取资产类型添加前缀和修改前缀 映射代码 代码 效果 在之前一章中,我们创建了插件,用来扩展编辑器的使用: …

目录

了解相关的函数

第一种做法:自定义添加选择资产的前缀或后缀

代码

效果

第二种做法:通过映射来获取资产类型添加前缀和修改前缀

映射代码

代码

效果


在之前一章中,我们创建了插件,用来扩展编辑器的使用:

UE5.1编辑器拓展【一、脚本化资产行为,通知,弹窗,高效复制多个同样的资产】-CSDN博客

现在我们需要的是能够更快的对资产的名字进行一个更改,比如对前缀名的添加,或者是后缀的删除等等。

了解相关的函数

要更改资产的名字,首先我们要先了解几个相关的编辑器函数,以及FString的使用:

首先是RenameAsset,这个函数是属于UEditorUtilityLibrary,使用的时候就是输入资产和新的名字。

然后是FString的使用,这里只需要+即可,比如你要加前缀Prefix,则Prefix+name即可,后缀也是一样。

当然这只是一种做法,除此之外,还有通过判断类型来直接添加名字。

第一种做法:自定义添加选择资产的前缀或后缀

如果是需要自定义选择前缀名,那么我们需要的是输入一个FString和一个bool。

通过bool来判断你是要添加前缀还是后缀。

首先遍历选择的资产,然后检查是否有效,然后判断是添加前缀还是后缀,最后进行添加。

然后右下角通知添加前缀成功。

代码

void UQuicklyAssetAction::AddAssetPreOrEndfixes(FString Assetfixes, bool PrefixOrPostfix)
{TArray<UObject*> SelectedObjects = UEditorUtilityLibrary::GetSelectedAssets();uint32 Counter = 0;for (UObject* SelectedObject : SelectedObjects){if (!SelectedObject)//检查是否有效{continue;}FString NewName;if (PrefixOrPostfix)//添加前缀{NewName = Assetfixes + SelectedObject->GetName();}else//添加后缀{NewName = SelectedObject->GetName()+ Assetfixes;}UEditorUtilityLibrary::RenameAsset(SelectedObject, NewName);Counter++;}if (Counter>0){if (PrefixOrPostfix){ShowNotifyInfo("Prefix add "+FString::FromInt(Counter)+" files",7);}else{ShowNotifyInfo("Postfix add " + FString::FromInt(Counter) + " files", 7);}}
}	

效果

可以看到里面有相关注释和行为:

然后点击:

第二种做法:通过映射来获取资产类型添加前缀和修改前缀

首先我们做一个映射,这个映射的作用就是判断你的资产是属于哪种类的存在:

映射代码

TMap<UClass*, FString> PrefixMap ={{UBlueprint::StaticClass(),TEXT("BP_")},{UStaticMesh::StaticClass(),TEXT("SM_")},{UMaterial::StaticClass(),TEXT("M_")},{UMaterialInstanceConstant::StaticClass(),TEXT("MI_")},{UMaterialFunction::StaticClass(),TEXT("MF_")},{UParticleSystem::StaticClass(),TEXT("PS_")},{USoundCue::StaticClass(),TEXT("SC_")},{USoundWave::StaticClass(),TEXT("SW_")},{UTexture::StaticClass(),TEXT("T_")},{UTexture2D::StaticClass(),TEXT("T2D_")},{UUserWidget::StaticClass(),TEXT("UI_")},//用户控件无效,需要继续寻找{USkeletalMeshComponent::StaticClass(),TEXT("SK_")},{UNiagaraSystem::StaticClass(),TEXT("NS_")},{UNiagaraEmitter::StaticClass(),TEXT("NE_")}};

做好这个映射之后【有些可能有问题,需要自己去重新查找一下相关的类】

接下来和之前一样,去遍历我们选择的资产,然后寻找资产的类,来获取我们做的映射中的value值【前缀】。

然后在获取资产名字来判断这个资产是否已经有了和这个一样的前缀,有了就不加了。

然后继续做一个判断,假如你做了一个材质实例,那么其名字必然是M_XXX_Inst,我们如果直接添加了名字,就会变成MI_M_XXX_Inst,所以在添加之前,我们需要先判断一下,前缀是不是M_和后缀是不是_Inst

是的话,就进行删除,然后在重命名。

代码

void UQuicklyAssetAction::WithClassAddAssetPrefixes()
{//将选择的资产放入数组TArray<UObject*> SelectedObjects = UEditorUtilityLibrary::GetSelectedAssets();uint32 Counter = 0;//遍历选择的资产for (UObject* SelectedObject : SelectedObjects){//如果无效则跳入下一次迭代if (!SelectedObject){continue;}//返回的是FString指针,通过选择资产的类作为key来找到PrefixMap映射中的value,如M_FString*  PrefixFound =PrefixMap.Find(SelectedObject->GetClass());//判断是否有效和存在if (!PrefixFound || PrefixFound->IsEmpty()){//无效则打印没有找到,然后输出这个类的类的名字DebugPrint(TEXT("Failed to find Prefix for class ") + SelectedObject->GetClass()->GetName(), FColor::Red);DebugPrintLog(TEXT("Failed to find Prefix for class ") + SelectedObject->GetClass()->GetName());continue;}//获取老资产的名字FString OldName = SelectedObject->GetName();//判断资产的名字是否以PrefixFound开头:如M_if (OldName.StartsWith(*PrefixFound)){DebugPrint(OldName + " already have the prefix!", FColor::Red);DebugPrintLog(OldName + " already have the prefix!");continue;}//这里做材质实例的检查if (SelectedObject->IsA<UMaterialInstanceConstant>()){//检查有没有,有就移除OldName.RemoveFromStart("M_");OldName.RemoveFromEnd("_Inst");}//做新的名字const FString NewNameWithPrefix = *PrefixFound + OldName;//重命名和计数UEditorUtilityLibrary::RenameAsset(SelectedObject, NewNameWithPrefix);Counter++;}if (Counter>0){ShowNotifyInfo("Success rename Asset " + FString::FromInt(Counter) + "Assets", 7);}
}

添加头文件和模块

需要注意的是这种方法我们需要对相关类型的头文件进行添加,以及相关的模块。

模块添加:

头文件添加​​​​​​​

#include "Materials/Material.h"
#include "Materials/MaterialInstanceConstant.h"
#include "Particles/ParticleSystem.h"
#include "Sound/SoundCue.h"
#include "Sound/SoundWave.h"
#include "Engine/Texture.h"
#include "Blueprint/UserWidget.h"
#include "Components/SkeletalMeshComponent.h"
#include "NiagaraSystem.h"
#include "NiagaraEmitter.h"

效果

http://www.hkea.cn/news/761236/

相关文章:

  • 申请空间 建立网站吗西安百度推广运营
  • 做花馍网站百度联盟
  • 沈阳建设企业网站google浏览器官网
  • 毕业论文 网站开发营销qq下载
  • 建网站要多长时间外贸网站优化
  • 苹果网站做的好的点电脑培训网上免费课程
  • 做网站开源互联网优化是什么意思
  • 模仿做网站b站上海热点新闻
  • phpcmsv9网站地图地推的60种方法
  • 湖南手机版建站系统哪个好百度网盘app怎么打开链接
  • asp网站开发的实训报告电商营销推广有哪些?
  • 交互设计流程外贸网站优化公司
  • 网络营销网站策划个人网站seo入门
  • 云南省网站备案要求全渠道营销的概念
  • 装修网站合作平台有哪些torrentkitty磁力猫
  • 大理网站开发长春seo结算
  • 西双版纳疫情最新情况seo营销的概念
  • 网站推广seo蜘蛛屯优化排名模板建网站价格
  • 怎样建设公司网站小程序b2b网站大全免费
  • 百度抓取不到网站百度识图搜索图片来源
  • 企业网站栏目规划的重要性网络营销的概述
  • 公司网站建设找谁做免费发布推广信息网站
  • 虚拟币网站开发seo百度关键字优化
  • 网站建设都 包括哪些淄博网站制作
  • 自己做装修网站南宁百度推广seo
  • 品牌建设浅谈seo网络营销外包
  • 昆山网站建设兼职千锋教育的官网
  • cm域名做网站盘古百晋广告营销是干嘛
  • 网站栏目策划企业网络营销方案
  • 网站自动采集指标sem广告投放是做什么的