2020-09-27

最近在做在编辑器下用代码创建Texture2D,并保存在本地,因为有时要对资源做一些操作,比如缩放,合并RGBA,加减像素等操作,但是每次生成的Texture都无法真正保存在磁盘上,搞了很久终于明白是哪里出了问题,记下来

1.Flag一定要有Public不然看不到,还要有Standalone或SetRoot存下来

有关Flag含义看这里

https://docs.unrealengine.com/en-US/API/Runtime/CoreUObject/UObject/EObjectFlags/index.html

2.修改完像素后一定要Source.Init不然无法保存到磁盘

Saving the texture

到目前为止,我们已经在PlatformData中输入数据。但是,PlatformData是临时的,不能存入到disk上去。为了将数据输入到texture非临时的变量中去,我们需要引用Source字段

NewTexture->Source.Init(TextureWidth, TextureHeight, 1, 1, ETextureSourceFromat::TSF_BGRA8, Pixels);

3.Packge的命名及映射

FString pathPackage = A + "/" + FileName;
    FString absolutePathPackage = FPaths::ProjectContentDir() + "/" + Path + "/";
    FPackageName::RegisterMountPoint(A, *absolutePathPackage);
    UPackage* Package = CreatePackage(nullptr, *pathPackage);

这里要把A映射一下

4.最后不要忘记

Texture->AddToRoot();

FAssetRegistryModule::AssetCreated(Texture);

参考:

虚幻4程序动态创建package资源并且导出资源

https://blog.csdn.net/qq_16756235/article/details/83004181

UE4 – Save a texture as a new asset

https://zhuanlan.zhihu.com/p/67983183

 

 

Copy RenderTarget2D:

TArray<FColor> RawColorArray;

auto RenderTarget = RT2D->GameThread_GetRenderTargetResource();

RenderTarget->ReadPixels(RawColorArray);

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页