ProjectDDD/Packages/com.singularitygroup.hotreload/Editor/PlayerBuild/BuildGenerateBuildInfo.cs
2025-07-08 19:46:31 +09:00

43 lines
1.6 KiB
C#

using System;
using System.IO;
using UnityEditor;
using UnityEditor.Build;
#pragma warning disable CS0618
namespace SingularityGroup.HotReload.Editor {
public class BuildGenerateBuildInfo : IPreprocessBuild, IPostprocessBuild {
public int callbackOrder => 10;
public void OnPreprocessBuild(BuildTarget target, string path) {
try {
if (!HotReloadBuildHelper.IncludeInThisBuild()) {
return;
}
// write BuildInfo json into the StreamingAssets directory
GenerateBuildInfo(BuildInfo.GetStoredPath(), target);
} catch (BuildFailedException) {
throw;
} catch (Exception e) {
throw new BuildFailedException(e);
}
}
private static void GenerateBuildInfo(string buildFilePath, BuildTarget buildTarget) {
var buildInfo = BuildInfoHelper.GenerateBuildInfoMainThread(buildTarget);
// write to StreamingAssets
// create StreamingAssets folder if not exists (in-case project has no StreamingAssets files)
// ReSharper disable once AssignNullToNotNullAttribute
Directory.CreateDirectory(Path.GetDirectoryName(buildFilePath));
File.WriteAllText(buildFilePath, buildInfo.ToJson());
}
public void OnPostprocessBuild(BuildTarget target, string path) {
try {
File.Delete(BuildInfo.GetStoredPath());
} catch {
// ignore
}
}
}
}