欢迎光临散文网 会员登陆 & 注册

【UE4】修改Material.cpp写入自己的标记

2020-12-22 22:24 作者:天空游荡的鱼  | 我要投稿

    为什么要这么做,你懂的!

    修改其实很简单,只需要在UMaterial::Serialize函数写入字段即可。直接粘代码了。

写入数据到材质球

值得注意的是:在Loading时,需要做数据有效性检查,FArchive不要越界了。

有写入就会有还原,还原时应该怎么做呢?

遍历整个Content目录,加载Material.uasset并保存就可以了。

UObject* MatObject = LoadObject<UObject>(NULL, TEXT("/Game/Common/PBR_Parent_Material/M_Screen_Parent01.M_Screen_Parent01"));


TArray<UPackage*> PackagesToSave;


checkf(((MatObject != nullptr) && MatObject->IsAsset()), TEXT("Invalid object to save: %s"), (MatObject != nullptr) ? *MatObject->GetFullName() : TEXT("Null Object"));

PackagesToSave.Add(MatObject->GetOutermost());


FEditorFileUtils::EPromptReturnCode ReturnCode = FEditorFileUtils::PromptForCheckoutAndSave(PackagesToSave, false , /*bPromptToSave=*/ false);

关卡也可以保存:

UObject* LevelObject = LoadObject<UObject>(NULL, TEXT("/Game/gameupdater/scene/TestLoadMap.TestLoadMap"));

bool bReturnCode = false;

UWorld* theWorld = Cast<UWorld>(LevelObject);

UClass* clz = LevelObject->GetClass();

Level = theWorld->GetLevel(0);

if (Level && FEditorFileUtils::PromptToCheckoutLevels(false, Level))

{

bReturnCode = FEditorFileUtils::SaveLevel(Level);

}


【UE4】修改Material.cpp写入自己的标记的评论 (共 条)

分享到微博请遵守国家法律