// Generates example data layout of 2 Prefabs both referencing the Mesh of an FBX // Each Prefab and Mesh is located in a separate bundle public static BuildDependencyInformation CreateAssetsWithFBXMeshReference(bool includeFbxInBundle) { var prefab1 = new GUID("00000000000000000000000000000001"); var prefab2 = new GUID("00000000000000000000000000000002"); var fbx = new GUID("00000000000000000000000000000010"); var fbxInfo = CreateFBXWithMesh(fbx); var buildInfo = new BuildDependencyInformation(); buildInfo.assetLoadInfo.Add(prefab1, CreatePrefabWithReferences(prefab1, fbxInfo.includedObjects[5])); buildInfo.assetLoadInfo.Add(prefab2, CreatePrefabWithReferences(prefab2, fbxInfo.includedObjects[5])); if (includeFbxInBundle) { buildInfo.assetLoadInfo.Add(fbx, fbxInfo); } List <string> assetDependencies; buildInfo.assetToBundles.GetOrAdd(prefab1, out assetDependencies); assetDependencies.Add(prefab1.ToString()); if (includeFbxInBundle) { assetDependencies.Add(fbx.ToString()); } buildInfo.assetToBundles.GetOrAdd(prefab2, out assetDependencies); assetDependencies.Add(prefab2.ToString()); if (includeFbxInBundle) { assetDependencies.Add(fbx.ToString()); } if (includeFbxInBundle) { buildInfo.assetToBundles.GetOrAdd(fbx, out assetDependencies); assetDependencies.Add(fbx.ToString()); } List <GUID> assetsInBundle; buildInfo.bundleToAssets.GetOrAdd(prefab1.ToString(), out assetsInBundle); assetsInBundle.Add(prefab1); buildInfo.bundleToAssets.GetOrAdd(prefab2.ToString(), out assetsInBundle); assetsInBundle.Add(prefab2); if (includeFbxInBundle) { buildInfo.bundleToAssets.GetOrAdd(fbx.ToString(), out assetsInBundle); assetsInBundle.Add(fbx); } return(buildInfo); }
// Generates example data layout of 3 Prefabs referencing 2 materials with 1 shader // Each Prefab and Mesh is located in a separate bundle public static BuildDependencyInformation CreateAssetsWithMaterialReference() { var prefab1 = new GUID("00000000000000000000000000000001"); var prefab2 = new GUID("00000000000000000000000000000002"); var prefab3 = new GUID("00000000000000000000000000000003"); var material1 = ConstructObjectIdentifier(new GUID("00000000000000000000000000000010"), 2100000, FileType.MetaAssetType, ""); // Material var material2 = ConstructObjectIdentifier(new GUID("00000000000000000000000000000020"), 2100000, FileType.MetaAssetType, ""); // Material var shader = ConstructObjectIdentifier(new GUID("00000000000000000000000000000100"), 6, FileType.NonAssetType, "resources/unity_builtin_extra"); // Shader var buildInfo = new BuildDependencyInformation(); buildInfo.assetLoadInfo.Add(prefab1, CreatePrefabWithReferences(prefab1, material1, shader)); buildInfo.assetLoadInfo.Add(prefab2, CreatePrefabWithReferences(prefab2, material2, shader)); buildInfo.assetLoadInfo.Add(prefab3, CreatePrefabWithReferences(prefab3, material1, shader)); List <string> assetDependencies; buildInfo.assetToBundles.GetOrAdd(prefab1, out assetDependencies); assetDependencies.Add(prefab1.ToString()); buildInfo.assetToBundles.GetOrAdd(prefab2, out assetDependencies); assetDependencies.Add(prefab2.ToString()); buildInfo.assetToBundles.GetOrAdd(prefab3, out assetDependencies); assetDependencies.Add(prefab3.ToString()); List <GUID> assetsInBundle; buildInfo.bundleToAssets.GetOrAdd(prefab1.ToString(), out assetsInBundle); assetsInBundle.Add(prefab1); buildInfo.bundleToAssets.GetOrAdd(prefab2.ToString(), out assetsInBundle); assetsInBundle.Add(prefab2); buildInfo.bundleToAssets.GetOrAdd(prefab3.ToString(), out assetsInBundle); assetsInBundle.Add(prefab3); return(buildInfo); }
public static BuildPipelineCodes Build(BuildDependencyInformation buildInfo, out BuildCommandSet commandSet, bool useCache = false, BuildProgressTracker progressTracker = null) { commandSet = new BuildCommandSet(); // Strip out sprite source textures if nothing references them directly var spriteSourceProcessor = new SpriteSourceProcessor(useCache, progressTracker); var exitCode = spriteSourceProcessor.Convert(buildInfo.assetLoadInfo, out buildInfo.assetLoadInfo); if (exitCode < BuildPipelineCodes.Success) { return(exitCode); } // Generate the commandSet from the calculated dependency information var commandSetProcessor = new CommandSetProcessor(useCache, progressTracker); exitCode = commandSetProcessor.Convert(buildInfo, out commandSet); if (exitCode < BuildPipelineCodes.Success) { return(exitCode); } return(exitCode); }
public static BuildPipelineCodes Build(BuildSettings settings, BuildCompression compression, string outputFolder, BuildDependencyInformation buildInfo, BuildCommandSet commandSet, out BundleBuildResult result, bool useCache = false, BuildProgressTracker progressTracker = null) { result = new BundleBuildResult(); // Write out resource files var commandSetWriter = new CommandSetWriter(useCache, progressTracker); var exitCode = commandSetWriter.Convert(commandSet, settings, out result.bundleDetails); if (exitCode < BuildPipelineCodes.Success) { return(exitCode); } // Archive and compress resource files var resourceArchiver = new ResourceFileArchiver(useCache, progressTracker); exitCode = resourceArchiver.Convert(result.bundleDetails, buildInfo.sceneResourceFiles, compression, outputFolder, out result.bundleCRCs); if (exitCode < BuildPipelineCodes.Success) { return(exitCode); } // Generate Unity5 compatible manifest files //string[] manifestfiles; //var manifestWriter = new Unity5ManifestWriter(useCache, true); //if (!manifestWriter.Convert(commandSet, output, crc, outputFolder, out manifestfiles)) // return false; return(exitCode); }
public static BuildPipelineCodes Build(BuildInput input, BuildSettings settings, out BuildDependencyInformation buildInfo, bool useCache = false, BuildProgressTracker progressTracker = null) { buildInfo = null; // Rebuild sprite atlas cache for correct dependency calculation & writing var spriteCacher = new SpriteAtlasCacher(useCache, progressTracker); var exitCode = spriteCacher.Convert(settings.target); if (exitCode < BuildPipelineCodes.Success) return exitCode; // Generate dependency information for all assets in BuildInput var buildInputDependency = new BuildInputDependency(useCache, progressTracker); exitCode = buildInputDependency.Convert(input, settings, out buildInfo); if (exitCode < BuildPipelineCodes.Success) return exitCode; return exitCode; }