从蓝图载入一张纹理开始理解UE4的资源加载(二) - 知乎 (zhihu.com) 场景 搭了一个简单场景,一个按钮点击触发蓝图的Async Load Asset方法,方法载入Texture2D'/Game/StarterContent/Textures/T_Brick_Clay_Beveled_D.T_Brick_Clay_Beveled_D'资源。 阶段1:蓝图到调用StreamableManager 阶段小结:从蓝图到具体方法的...
从蓝图载入一张纹理开始理解UE4的资源加载(一) 上一篇把主线程的一些操作整理了一下,这一节从异步线程AsyncLoadingThread的逻辑开始,介绍如何为Package创建加载事件,加载事件如何被执行这些问题。 下一篇计划讲一下各个加载事件,还有EventGraph如何管理Package之间,Package内部不同加载事件的加载顺序。
由于bWasHeldForLater参数为true,且无其他前置条件,Package_SetupImports节点能够顺利触发,从而添加下一阶段事件SetupImports。总结:UE4在处理从蓝图载入纹理资源时,通过复杂的依赖关系管理和加载机制,确保所有依赖的资源能够正确加载和处理。这一过程中,对Import对象的查找、XObject的获取、依赖关系的添加...
在游戏资源加载过程中,资源间存在依赖关系,如模型依赖材质,材质依赖贴图等。此机制在UE4的资源加载阶段中发挥关键作用。首先,所有Import对象的XObject属性为null。程序会调用FindExistingImport方法,查找对应对象是否已加载至内存。接着,每个Import都关联一个Outer属性,例如Import0的Outer为Import7,而Impor...
在深入UE4资源加载机制中,Tick AsyncPackages的实现是核心环节之一,通过FAsyncLoadingThread的流程梳理,理解其加载机制变得清晰。处理AsyncPackagesReadyForTick时,确认Pacakge未加载完毕,则进入FAsyncPackage的TickAsyncPackage流程。此流程首先调用BeginAsyncLoad方法,随后处理PackageObjLoaded数组,实际上是对内部...
处理前各Import的XObject都为null,首先调用FindExistingImport方法查看对应XObject是否已经加载到内存中。 然后每一项Import有一个Outer,例如Import0的Outer是Import7,Import7的Outer是Null,表示其XObject是一个UPacakge。 ImportIndexObjectNameOuter 0 Default_BodySetup ImportIndex=7 1 BodySetup ImportIndex=7 2 Stat...
StartPrecacheRequest方法中依次处理可以开始IO的Export,过程中使用bReady变量标记是否完成加载。 ExportsThatCanHaveIOStarted.HeapPop(LocalExportIndex, false); FObjectExport& Export = Linker->ExportMap[LocalExportIndex]; bool bReady = false; 首先判断Export是否含有NeedLoad标记,否则无需加载。
GetFileVersionLicenseeUE4()); Loader->SetEngineVer(Summary.SavedByEngineVersion); Loader->SetCustomVersions(SummaryVersions); } 通过LinkerRoot找到UPackage,将各种属性传递给UPackage对象 if (UPackage* LinkerRootPackage = LinkerRoot) { LinkerRootPackage->SetPackageFlagsTo(NewPackageFlags); LinkerRoot...
从蓝图载入一张纹理开始理解UE4的资源加载(十)——ExportsDone、ProcessPostloadWait、StartPostLoad 剩下三个事件都不算复杂,并且互相有所关联,就放在一起说吧~ 本来准备了九大行星(带着冥王星一起)当这九个阶段的封面图,现在得把后面三个p一块了QAQ