public virtual void Save(Stream stream, AssetTarget[] targets) { StreamWriter sw = new StreamWriter(stream); //写入文件头判断文件类型用,ABDT 意思即 Asset-Bundle-Data-Text sw.WriteLine("ABDT"); for (int i = 0; i < targets.Length; i++) { AssetTarget target = targets[i]; HashSet <AssetTarget> deps = new HashSet <AssetTarget>(); target.GetDependencies(deps); //bundle name sw.WriteLine(target.bundleName); //File Name sw.WriteLine(target.file.Name); //hash sw.WriteLine(target.bundleCrc); //type sw.WriteLine((int)target.compositeType); //写入依赖信息 sw.WriteLine(deps.Count); foreach (AssetTarget item in deps) { sw.WriteLine(item.bundleName); } } sw.Close(); }
public override void Save(Stream stream, AssetTarget[] targets) { BinaryWriter sw = new BinaryWriter(stream); //写入文件头判断文件类型用,ABDB 意思即 Asset-Bundle-Data-Binary sw.Write(new char[] { 'A', 'B', 'D', 'B' }); List <string> bundleNames = new List <string>(); for (int i = 0; i < targets.Length; i++) { AssetTarget target = targets[i]; bundleNames.Add(target.bundleName); } //写入文件名池 sw.Write(bundleNames.Count); for (int i = 0; i < bundleNames.Count; i++) { sw.Write(bundleNames[i]); } //写入详细信息 for (int i = 0; i < targets.Length; i++) { AssetTarget target = targets[i]; HashSet <AssetTarget> deps = new HashSet <AssetTarget>(); target.GetDependencies(deps); //bundle name sw.Write(bundleNames.IndexOf(target.bundleName)); //File Name sw.Write(target.file.Name); //hash sw.Write(target.bundleCrc); //type sw.Write((int)target.compositeType); //写入依赖信息 sw.Write(deps.Count); foreach (AssetTarget item in deps) { sw.Write(bundleNames.IndexOf(item.bundleName)); } } sw.Close(); }