public void Write(UnityBinaryWriter writer) { // Skip Header since MetadataSize and DataOffset are unknown int header_pos = writer.Position; writer.Position += Header.CalcSize(); // Write Metadata writeMetadata(writer); // Write Objects byte[] body = writeObjects(writer); // Write Scripts writeScripts(writer); // Write Externals writeExternals(writer); // Write UserInformation writer.WriteStringToNull(UserInformation); Header.MetadataSize = writer.Position - Header.CalcSize(); // Align body if (writer.Position < 0x1000) { writer.Position = 0x1000; } else { writer.Align(16); } Header.DataOffset = writer.Position; // Write body writer.WriteBytes(body); // Write Header Header.FileSize = writer.Position; writer.Position = header_pos; Header.Write(writer); }
/// <summary> /// Write AssetBundle using UnityBinaryWriter. /// </summary> /// <remarks>Compression is disabled by default. To enable, set 'EnableCompression' to true.</remarks> /// <param name="writer">UnityBinaryWriter to write to.</param> public void Write(UnityBinaryWriter writer) { // Write files before header since filesize is unknown int org = writer.Position; writer.Position += (int)Header.CalcSize(); writeFiles(writer); // Get the filesize and write header Header.bundleSize = writer.Length; writer.Position = org; Header.Write(writer); }