No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

URPPreprocessBuild.cs 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using UnityEditor.Build;
  5. using UnityEditor.Build.Reporting;
  6. using UnityEngine;
  7. using UnityEngine.Rendering;
  8. using UnityEngine.Rendering.Universal;
  9. namespace UnityEditor.Rendering.Universal
  10. {
  11. class URPPreprocessBuild : IPreprocessBuildWithReport
  12. {
  13. public int callbackOrder => int.MinValue + 100;
  14. private static URPBuildData m_BuildData = null;
  15. public void OnPreprocessBuild(BuildReport report)
  16. {
  17. m_BuildData?.Dispose();
  18. bool isDevelopmentBuild = (report.summary.options & BuildOptions.Development) != 0;
  19. m_BuildData = new URPBuildData(EditorUserBuildSettings.activeBuildTarget, isDevelopmentBuild);
  20. if (m_BuildData.buildingPlayerForUniversalRenderPipeline)
  21. {
  22. // Now that we know that we are on URP we need to make sure everything is correct, otherwise we break the build.
  23. if (!URPBuildDataValidator.IsProjectValidForBuilding(report, out var message))
  24. throw new BuildFailedException(message);
  25. LogIncludedAssets(m_BuildData.renderPipelineAssets);
  26. }
  27. }
  28. internal static void LogIncludedAssets(List<UniversalRenderPipelineAsset> assetsList)
  29. {
  30. using (GenericPool<StringBuilder>.Get(out var assetsIncluded))
  31. {
  32. assetsIncluded.Clear();
  33. assetsIncluded.AppendLine($"{assetsList.Count} URP assets included in build");
  34. foreach (var urpAsset in assetsList)
  35. {
  36. assetsIncluded.AppendLine($"- {urpAsset.name} - {AssetDatabase.GetAssetPath(urpAsset)}");
  37. foreach (var rendererData in urpAsset.m_RendererDataList)
  38. {
  39. if (rendererData != null)
  40. assetsIncluded.AppendLine($"\t - {rendererData.name} - {AssetDatabase.GetAssetPath(rendererData)} - {rendererData.GetType()}");
  41. }
  42. }
  43. Debug.Log(assetsIncluded);
  44. }
  45. }
  46. public void OnPostprocessBuild(BuildReport report)
  47. {
  48. // Clean up the build data once we have finishing building
  49. m_BuildData?.Dispose();
  50. m_BuildData = null;
  51. }
  52. }
  53. }