国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

UE5.1編輯器拓展【三、腳本化資產(chǎn)行為,刪除無引用資產(chǎn)】

這篇具有很好參考價(jià)值的文章主要介紹了UE5.1編輯器拓展【三、腳本化資產(chǎn)行為,刪除無引用資產(chǎn)】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

?需要考慮的問題

重定向的修復(fù)函數(shù)

代碼:

刪除無引用資產(chǎn)

代碼

需要添加的頭文件和模塊


在我們刪除資產(chǎn)的時(shí)候,會(huì)發(fā)現(xiàn),有些資產(chǎn)在刪除的時(shí)候會(huì)出現(xiàn)有被什么什么引用,還有的是沒有被引用。

而我們?nèi)绻苯舆x擇一片去進(jìn)行刪除的話,那么會(huì)導(dǎo)致看到很多有引用和沒有引用的出現(xiàn)。

現(xiàn)在我們需要將沒有引用的全部刪除,而有引用的全部留下,做一個(gè)腳本化資產(chǎn)行為。

?需要考慮的問題

1.首先我們會(huì)選擇一堆資產(chǎn),如何從資產(chǎn)中,找到?jīng)]有被引用的資產(chǎn),然后進(jìn)行刪除。

2.我們要考慮到假如資產(chǎn)遷移后沒有修復(fù)重定向的情況,所以要在刪除無引用資產(chǎn)前需要對(duì)重定向器進(jìn)行全局的一個(gè)修復(fù)。

3.模塊問題,我們修復(fù)重定向器的時(shí)候,肯定會(huì)訪問各種各樣不同的模塊,而對(duì)此我們需要進(jìn)行一個(gè)添加。

重定向的修復(fù)函數(shù)

首先我們做一個(gè)函數(shù),這個(gè)函數(shù)的作用就是在刪除資產(chǎn)之前對(duì)全局進(jìn)行一個(gè)重定向器的修復(fù),以防止不小心刪除了沒有修復(fù)重定向器的有引用資產(chǎn)

所以這個(gè)函數(shù)我決定放在private里面使用。

代碼:

private:
	//修復(fù)重定向器
	void FixUpRedirectors();

首先是加載AssetRegistry模塊,然后創(chuàng)建一個(gè)過濾器,并對(duì)其中進(jìn)行設(shè)置。

之后將通過這個(gè)遍歷器的資產(chǎn)放入數(shù)組中去,再繼續(xù)遍歷,然后再繼續(xù)獲取指定過濾條件的資產(chǎn)信息。

將其中加入到需要修復(fù)的數(shù)組中去。

繼續(xù)加載模塊。

最后進(jìn)行修復(fù)。

FAssetRegistryModule模塊:AssetRegistry模塊用于管理項(xiàng)目中的資產(chǎn)信息,包括資產(chǎn)的元數(shù)據(jù)、引用關(guān)系、依賴關(guān)系等。它的主要作用是提供對(duì)項(xiàng)目中的資產(chǎn)進(jìn)行查詢和操作的接口。

FAssetToolsModule模塊:AssetTools模塊用于執(zhí)行與資產(chǎn)操作相關(guān)的功能,如創(chuàng)建、刪除、重命名等。它提供了一系列的方法來管理項(xiàng)目中的資產(chǎn)。

void UQuicklyAssetAction::FixUpRedirectors()
{
	TArray<UObjectRedirector*> RedirectorsToFixArray;
	//加載AssetRegistry模塊
	FAssetRegistryModule& AssetRegistryModule =FModuleManager::Get().LoadModuleChecked<FAssetRegistryModule>(TEXT("AssetRegistry"));
	//創(chuàng)建過濾器
	FARFilter Filter;
	Filter.bRecursivePaths = true;//遍歷子文件
	Filter.PackagePaths.Emplace("/Game");//遍歷 "/Game" 目錄下的文件
	Filter.ClassNames.Emplace("ObjectRedirector");//類名為 "ObjectRedirector" 的文件
	//獲取滿足條件的文件到OutRedirectors中
	TArray<FAssetData> OutRedirectors;
	AssetRegistryModule.Get().GetAssets(Filter, OutRedirectors);
	//將滿足條件的文件添加到 RedirectorsToFixArray 數(shù)組中
	for (const FAssetData& RedirectorData:OutRedirectors)
	{
		if (UObjectRedirector* RedirectorToFix=Cast<UObjectRedirector>(RedirectorData.GetAsset()))
		{
			RedirectorsToFixArray.Add(RedirectorToFix);
		}
	}
	//加載 AssetTools 模塊
	FAssetToolsModule& AssetToolsModule = FModuleManager::LoadModuleChecked<FAssetToolsModule>(TEXT("AssetTools"));
	//修復(fù)重定向器
	AssetToolsModule.Get().FixupReferencers(RedirectorsToFixArray);
}

刪除無引用資產(chǎn)

在完成了修復(fù)重定向的函數(shù)后,我們來進(jìn)行真正的無引用資產(chǎn)的刪除函數(shù)制作:

其實(shí)其中的方法很簡單,主要的功能和前面兩章大差不差,只不過添加了對(duì)資產(chǎn)重定向的修復(fù)。

代碼

void UQuicklyAssetAction::RemoveNoRefAsset()
{
	TArray<FAssetData> SelectedAssetsData = UEditorUtilityLibrary::GetSelectedAssetData();
	TArray<FAssetData> NoRefAssetData;
	//修復(fù)重定向器
	FixUpRedirectors();
	for (const FAssetData& SelectedAssetDate:SelectedAssetsData)
	{
		//輸入資產(chǎn)的路徑,獲取對(duì)資產(chǎn)的引用,保存在數(shù)組里面
		TArray<FString> AssetRefs = UEditorAssetLibrary::FindPackageReferencersForAsset(SelectedAssetDate.ObjectPath.ToString());
		//AssetRefs的數(shù)量為0,則表示沒有引用,添加到要?jiǎng)h除的數(shù)組里面,之后統(tǒng)一進(jìn)行刪除
		if (AssetRefs.Num()==0)
		{
			NoRefAssetData.Add(SelectedAssetDate);
		}
	}
	//判斷未引用的資產(chǎn)數(shù)量是否為0
	if (NoRefAssetData.Num()==0)
	{
		ShowMsgDialog(EAppMsgType::Ok, "No asset with a 0 reference was found among the selected assets.", false);
		return;
	}
	//#include "ObjectTools.h"添加頭文件,刪除資產(chǎn)
	const int32 DeleteAssetNum= ObjectTools::DeleteAssets(NoRefAssetData);
	if (DeleteAssetNum>0)
	{
		ShowNotifyInfo("Description The asset referenced by 0 is deleted successfully. A total of" + FString::FromInt(DeleteAssetNum) + "files are deleted.", 7);
	}
}

需要添加的頭文件和模塊

UE5.1編輯器拓展【三、腳本化資產(chǎn)行為,刪除無引用資產(chǎn)】,# UE4/5編輯器,ue5,編輯器,ue4,虛幻,虛幻引擎,c++,游戲引擎

UE5.1編輯器拓展【三、腳本化資產(chǎn)行為,刪除無引用資產(chǎn)】,# UE4/5編輯器,ue5,編輯器,ue4,虛幻,虛幻引擎,c++,游戲引擎文章來源地址http://www.zghlxwxcb.cn/news/detail-727749.html

到了這里,關(guān)于UE5.1編輯器拓展【三、腳本化資產(chǎn)行為,刪除無引用資產(chǎn)】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 在UE5編輯器環(huán)境中使用Python

    在UE5編輯器環(huán)境中使用Python

    UE有很多Python方案,本文所講述的Python為UE5官方內(nèi)嵌版本方案,并且只能在編輯器環(huán)境下使用,使用該功能可以編寫編輯器下的輔助工具,提升開發(fā)效率。 講一講UE5中調(diào)用Python的幾種方式,首先是控制臺(tái)下調(diào)用Python,將控制臺(tái)的CMD圖標(biāo)換成Python,即可輸入并執(zhí)行Python語句:

    2024年02月11日
    瀏覽(21)
  • UE5 MetaHuman SDK插件的使用【一、編輯器創(chuàng)建音波與藍(lán)圖創(chuàng)建獲取音波,語音與嘴唇口型的同步】

    UE5 MetaHuman SDK插件的使用【一、編輯器創(chuàng)建音波與藍(lán)圖創(chuàng)建獲取音波,語音與嘴唇口型的同步】

    目錄 打開插件 創(chuàng)建音頻 編輯器這直接創(chuàng)建音頻: 藍(lán)圖中創(chuàng)建和獲取音頻: 唇語: 聲音與嘴唇同步: 方法一【效果不是很好】: 方法二【效果很好,但有一段時(shí)間延遲在處理】: 邏輯: MetaHuman SDK插件 目前只支持 ue5 和 ue5.1 版本。 首先第一步 創(chuàng)建音頻 : 這樣音頻就創(chuàng)建

    2024年02月09日
    瀏覽(26)
  • Unity編輯器拓展-Odin

    Unity不支持泛型類型序列化,例如字典原生Unity不支持序列化,而Odin可以繼承序列化的Mono實(shí)現(xiàn) 功能強(qiáng)大且使用簡單,原生Unity想實(shí)現(xiàn)一些常見的功能需要額外自己編寫Unity擴(kuò)展的編碼,實(shí)現(xiàn)功能只需要加一個(gè)特性即可Odin幫忙寫好了內(nèi)部管理和實(shí)現(xiàn) 編輯器的窗口實(shí)現(xiàn)簡單且美觀

    2024年02月08日
    瀏覽(26)
  • 【Unity編輯器】拓展Project視圖

    【Unity編輯器】拓展Project視圖

    目錄 1、拓展右鍵菜單 2、創(chuàng)建一個(gè)菜單 3、拓展布局 4、監(jiān)聽事件 首先創(chuàng)建一個(gè)Editor文件夾,此文件夾可以作為多個(gè)目錄的子文件夾存在,這樣開發(fā)者就可以按照功能來劃分,將不同功能的編輯代碼放在不同的Editor目錄下。 如果屬于編輯模式下的代碼,需要放在Editor文件夾下

    2024年02月02日
    瀏覽(25)
  • 【Unity編輯器】拓展Hierarchy視圖

    【Unity編輯器】拓展Hierarchy視圖

    目錄 1、拓展菜單 2、拓展布局 3、重寫菜單 在Hierarchy視圖中點(diǎn)擊Create按鈕,彈出的菜單My Create-Cube就是自定義拓展菜單 菜單中已經(jīng)包含了系統(tǒng)默認(rèn)的一些菜單項(xiàng),我們拓展的原理就是重寫MenuItem的自定義路徑。Create按鈕下的菜單項(xiàng)都在GameOject路徑下面,所以只要開頭是GameOb

    2024年02月02日
    瀏覽(19)
  • 【Unity編輯器】拓展Inspector視圖

    【Unity編輯器】拓展Inspector視圖

    目錄 1、拓展源生組件 2、拓展繼承組件 3、組件不可編輯 4、Context菜單 攝像機(jī)就是典型的源生組件。它的局限性就是拓展組件只能加在源生組件的最上面或者最下面,不能插在中間,不過這樣也就夠了 CustomEditor()表示自定義哪個(gè)組件,OnInspectorGUI()可以對(duì)它進(jìn)行重新繪制,b

    2024年02月07日
    瀏覽(30)
  • Unity UGUI一鍵綁定UI控件工具(編輯器拓展)

    Unity UGUI一鍵綁定UI控件工具(編輯器拓展)

    全為一鍵生成 實(shí)現(xiàn)自動(dòng)生成代碼綁定UI控件 并生成字典保存UI控件 減少自己拖拽 和手動(dòng)書寫過程 適用動(dòng)態(tài)加載面板 建議搭配UI框架使用 根據(jù)當(dāng)前選中的gameobject 查找其下方是否有對(duì)應(yīng)類型的控件 有就保存到字典中 然后通過向上遞歸拼湊地址,然后生成到粘貼板 直接粘貼到目

    2024年04月23日
    瀏覽(32)
  • Unity編輯器拓展——Editor模式下屏幕坐標(biāo)轉(zhuǎn)換為世界坐標(biāo)

    Unity編輯器拓展——Editor模式下屏幕坐標(biāo)轉(zhuǎn)換為世界坐標(biāo)

    發(fā)會(huì)牢騷,最近一直在做Unity的編輯器拓展,其中難的地方不少,但不至于到看不懂的地步,可一做到關(guān)于坐標(biāo)轉(zhuǎn)換的內(nèi)容時(shí)把我弄不會(huì)了。 這個(gè)不查不知道,一查嚇一跳,Unity的坐標(biāo)系非常多,有世界坐標(biāo),屏幕坐標(biāo),局部坐標(biāo),視窗坐標(biāo)等等,而且每一個(gè)都是不一樣的坐

    2024年02月03日
    瀏覽(29)
  • Unity行為樹可視化編輯器開發(fā)

    Unity行為樹可視化編輯器開發(fā)

    在ARPG項(xiàng)目的開發(fā)過程當(dāng)中,要涉及到NPC的AI系統(tǒng),一般來說,簡單的AI行為使用狀態(tài)機(jī)即可比較好的實(shí)現(xiàn),但如果NPC的行為稍微一復(fù)雜,那么使用狀態(tài)機(jī)來實(shí)現(xiàn)就會(huì)比較難維護(hù),并且后期工作量會(huì)隨著NPC狀態(tài)的增加而成倍增加。 這時(shí)就可以考慮使用行為樹來實(shí)現(xiàn)NPC的AI,行為

    2024年02月11日
    瀏覽(29)
  • 虛幻引擎UE編輯器卡頓問題

    虛幻引擎UE編輯器卡頓問題

    使用虛幻引擎編輯器編輯藍(lán)圖頁面卡頓,視角無法轉(zhuǎn)動(dòng),只能放大縮小,甚至事件圖表都無法拖動(dòng)。 顯卡驅(qū)動(dòng)安裝與N卡適配的studio版本。 在NVIDIA顯卡控制面板3D設(shè)置,程序設(shè)置找到UE,設(shè)置UE OpenGL渲染為GPU。 設(shè)置里找到圖形設(shè)置,添加UE,設(shè)置圖形首選項(xiàng)為高性能。

    2024年02月15日
    瀏覽(121)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包