从进入UObject::IsAsset()方法中,看见UE4对于是否是资源的判断很简单,要符合几个条件: 不能有RF_Transient和RF_ClassDefaultObject的flag 一定要有RF_Public的flag 不能是IsPendingKill的 断点调试发现第二个条件不符合,读出来的flag是RF_NoFlag。 我们看看RF_Public的解释: UOBject的flag 那么究竟是哪个地方设置...
RF_Public | RF_Standalone | RF_Transaction | RF_WasLoaded | RF_LoadComplete 然后把这一串flag全部设置到我们自己要序列化的文件上去。 可以发现问题被解决了! 然后再通过排除法,一个一个把flag去掉,最终发现关键在于: RF_Standanlone 想要资源能够被多次序列化,能够在Runtime运行之后还能在Editor下编辑文件,...
RF_NeedPostLoad <需要后加载对象。 RF_NeedPostLoadSubobject <在加载期间,表示该对象仍需要实例化子对象并修复序列化的组件引用 RF_NewerVersionExists <对象由于其所有者包被重新加载而被遗忘,并且当前存在更新版本 RF_beginderroyed <beginderroy已在对象上调用。 RF_FinishDestroy 已对对象调用了FinishDestroy。
这里返回值添加至了参数列表,不过有一个特定的名称ReturnValue:// 生成返回值参数信息 const UE4CodeGen_Private::FUnsizedIntPropertyParams Z_Construct_UFunction_UMyObject_ClassFunction_Statics:: NewProp_ReturnValue = { UE4CodeGen_Private::EPropertyClass::Int, "ReturnValue", RF_Public | RF_Transient | RF...
一定要有RF_Public的flag 不能是IsPendingKill的 断点调试发现第二个条件不符合,读出来的flag是RF_NoFlag。 我们看看RF_Public的解释: UOBject的flag 那么究竟是哪个地方设置了UObject的flag呢? 可以通过两种途径: NewObject的时候有个参数可以设置flag
ItemClass){UE_LOG(LogTemp,Error,TEXT("Func[%s] -> TargetClass has not been assigned"),*FString(__FUNCTION__));returnnullptr;}UPackage*ThisPackage=CreatePackage(*AssetPath);UDreamItem*ThisItem=NewObject<UDreamItem>(ThisPackage,ItemClass.Get(),*AssetName,EObjectFlags::RF_Public|RF_Stand...
UPackage::SavePackage(MyPkg, MyInstance, EObjectFlags::RF_Public|EObjectFlags::RF_Standalone, *PackageFileName, GError, nullptr, true, true, SAVE_NoError); 其中特别要注意的是路径的问题。上面总共出现了两个路径: 包的路径。包的路径一般用的是/Game/xxx这种形式,表示要将文件保存在你项目的Content...
UTexture2D* NewTexture = NewObject<UTexture2D>(Package, *TextureName, RF_Public | RF_Standalone | RF_MarkAsRootSet); 在这里,我们创建一个包/Game/ProceduralTextures/,并在调用 NewObject 时在该包中添加一个名为 TextureName 的纹理。 1、填充纹理 ...
UE_LOG(LogTemp, Display, TEXT("SaveMyData:Path:%s,FileName:%s"),*AssetPath,*PackageFileName);// 保存这个对象到一个指定路径的uasset文件bool bSaved = UPackage::SavePackage(Package, pWaveData, EObjectFlags::RF_Public | EObjectFlags::RF_Standalone, *PackageFileName, GError, nullptr, true...