void TestCompress() { try { LZMAHelper.Compress(ApplicationdataPath + "/Package_compress.upk", ApplicationdataPath + "/Package_unitypackage.7z", m_CodeProgress); } catch (Exception ex) { Debug.Log(ex); } }
/// <summary> /// 压缩 /// </summary> public void Compress() { this.slider.value = 0; new Thread(() => { LZMAHelper.Compress(path + "/PackFolder/xml.upk", path + "/PackFolder/xml.zupk", cp, (str) => { print(str); }); }).Start(); //this.StartCoroutine(WaitCompress()); }
public static void Write(Replay replay, string path) { using (SerializationWriter writer = new SerializationWriter(new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read))) { writer.Write((byte)replay.Ruleset); writer.Write(replay.OsuVersion); writer.Write(replay.BeatmapMD5Hash); writer.Write(replay.PlayerName); writer.Write(replay.ReplayMD5Hash); writer.Write(replay.Count300); writer.Write(replay.Count100); writer.Write(replay.Count50); writer.Write(replay.CountGeki); writer.Write(replay.CountKatu); writer.Write(replay.CountMiss); writer.Write(replay.ReplayScore); writer.Write(replay.Combo); writer.Write(replay.PerfectCombo); writer.Write((int)replay.Mods); string lifeFrames = null; foreach (LifeFrame frame in replay.LifeFrames) { lifeFrames += $"{frame.Time.Format()}|{frame.Percentage.Format()},"; } writer.Write(lifeFrames); writer.Write(replay.ReplayTimestamp.ToUniversalTime().Ticks); if (replay.ReplayFrames.Count == 0) { writer.Write(0); } else { string replayFrames = string.Empty; foreach (ReplayFrame frame in replay.ReplayFrames) { int keys = 0; switch (replay.Ruleset) { case Ruleset.Standard: keys = (int)frame.StandardKeys; break; case Ruleset.Taiko: keys = (int)frame.TaikoKeys; break; case Ruleset.Fruits: keys = (int)frame.CatchKeys; break; case Ruleset.Mania: keys = (int)frame.ManiaKeys; break; } replayFrames += $"{frame.TimeDiff}|{frame.X.Format()}|{frame.Y.Format()}|{keys},"; } byte[] rawBytes = Encoding.ASCII.GetBytes(replayFrames); using (MemoryStream ms = new MemoryStream()) { ms.Write(rawBytes, 0, rawBytes.Length); MemoryStream codedStream = LZMAHelper.Compress(ms); byte[] rawBytesCompressed = new byte[codedStream.Length]; codedStream.Read(rawBytesCompressed, 0, rawBytesCompressed.Length); writer.Write(rawBytesCompressed.Length); writer.Write(rawBytesCompressed); } } writer.Write(replay.OnlineId); } }
IEnumerator WaitCompress() { yield return(new WaitForSeconds(1)); LZMAHelper.Compress(Application.dataPath + "/PackFolder/xml.upk", Application.dataPath + "/PackFolder/xml.zupk", cp); }