怎么让网站快速收录,安平网站建设找盛千,wordpress咋用,用什么制作网站以下三个操作实际上是为了得到构建Bundle需要的其他参数#xff0c;最关键的Bundle组装参数在上文已经说过了#xff0c;至于这三个操作的具体细节不用过于追究#xff0c;一般不怎么会取修改。
这些参数采用命令模式被封装起来#xff0c;这是常见的参数非常多的时候的处…以下三个操作实际上是为了得到构建Bundle需要的其他参数最关键的Bundle组装参数在上文已经说过了至于这三个操作的具体细节不用过于追究一般不怎么会取修改。
这些参数采用命令模式被封装起来这是常见的参数非常多的时候的处理方式。
至于为什么要有这些参数其实取决于后面的Writing Task
【GenerateBundleCommands】
对BuildContent.BundleLayout中的 每个Asset bundle创建对应的AssetBundleWriteOperation 创建WriteCommand 根据filename和WriteData.FileToObjects知道一个要写哪些Object将每个Object封装成SerializationInfo其有两个字段 一是Object对应的ObjectIdentifier一个是serializationIndex表不同Object在File中的标识创建BuildUsageTagSet 从DependencyData.AssetUsage获取每个Asset的Usage然后Union创建BuildReferenceMap referenceMap.AddMappings(command.internalName, command.serializeObjects.ToArray());创建DependencyHash 从DependencyData.DependencyHash得到每个Asset的Hash128合起来再计算一次Hash HashingMethods.Calculate(dependencyHashes).ToHash128()创建AssetBundleInfo 得到bundleName从DependencyData.AssetInfo得到每个Asset对应的AssetLoadInfo对Scene Bundle中的创建SceneBundleWriteOperation 创建WriteCommand创建BuildUsageTagSet创建BuildReferenceMap创建DependencyHash创建SceneBundleInfo只有第一个场景有该参数 得到bundleName对每个Scene引用的Asset创建SceneLoadInfo其记录了三个信息 Scene的GUID、Scene的资源路径、Scene归属的内部文件名创建PreloadInfo 场景的referencedObjects中有而File中没有的要预先加载填充WriteData m_WriteData.WriteOperations.Add(operation);m_WriteData.FileToUsageSet.Add(command.internalName, usageSet);m_WriteData.FileToReferenceMap.Add(command.internalName, referenceMap); 【GenerateSubAssetPathMaps】
这里主要是为了处理BuildExtendedAssetData创建对应的AssetLoadInfo
ExtendedAssetData.ExtendedData获取扩展数据的Asset的guid从WriteData.AssetToFiles[asset][0]获取该Asset要被写入哪个文件从WriteData.WriteOperations找到该文件对应的写操作从写操作中的AssetBundleInfo获取该Asset的AssetLoadInfo获取该Asset对应的扩展数据的Object根据该Asset的AssetLoadInfo生成扩展的Object的AssetLoadInfo将生成的AssetLoadInfo放入写操作中的AssetBundleInfo中的AssetLoadInfoList中
【GenerateBundleMaps】
创建临时的map关系 从WriteData.AssetToFiles获取该Asset对应的MainFile从DependencyData.AssetInfo和DependencyData.SceneInfo获取该Asset的referencedObjects进而得到MainFile的referencedObjects从WriteData.AssetToFiles获取该Asset的MainFile依赖的其他File获取其他File依赖的Asset填充BuildReferenceMaps在GenerateBundleCommands只做了MainFile的其他File没做 MainFile有自己全部的Object不用引用其他的其他File引用的Object被剥离了需要记录引用的哪个File中的哪个Object referenceMap.AddMapping(file, serializedObject.serializationIndex, serializedObject.serializationObject);注意区分File中Obejct的索引serializationIndex和Asset中Object的索引FileID填充BuildUsageTagSet