BuildGenerateBuildInfo.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System;
  2. using System.IO;
  3. using UnityEditor;
  4. using UnityEditor.Build;
  5. #pragma warning disable CS0618
  6. namespace SingularityGroup.HotReload.Editor {
  7. public class BuildGenerateBuildInfo : IPreprocessBuild, IPostprocessBuild {
  8. public int callbackOrder => 10;
  9. public void OnPreprocessBuild(BuildTarget target, string path) {
  10. try {
  11. if (!HotReloadBuildHelper.IncludeInThisBuild()) {
  12. return;
  13. }
  14. // write BuildInfo json into the StreamingAssets directory
  15. GenerateBuildInfo(BuildInfo.GetStoredPath(), target);
  16. } catch (BuildFailedException) {
  17. throw;
  18. } catch (Exception e) {
  19. throw new BuildFailedException(e);
  20. }
  21. }
  22. private static void GenerateBuildInfo(string buildFilePath, BuildTarget buildTarget) {
  23. var buildInfo = BuildInfoHelper.GenerateBuildInfoMainThread(buildTarget);
  24. // write to StreamingAssets
  25. // create StreamingAssets folder if not exists (in-case project has no StreamingAssets files)
  26. // ReSharper disable once AssignNullToNotNullAttribute
  27. Directory.CreateDirectory(Path.GetDirectoryName(buildFilePath));
  28. File.WriteAllText(buildFilePath, buildInfo.ToJson());
  29. }
  30. public void OnPostprocessBuild(BuildTarget target, string path) {
  31. try {
  32. File.Delete(BuildInfo.GetStoredPath());
  33. } catch {
  34. // ignore
  35. }
  36. }
  37. }
  38. }