/// <summary> /// When we build using BuildPlayerStep with BuildOptions.AutoRunPlayer we run the player before CopyAdditionallyProvidedFilesStep is executed /// Sometimes you'll get lucky, since while the player is launching, CopyAdditionallyProvidedFilesStep will be executed in time /// And subscenes will be found...But in other cases, the player will launch without subscenes /// By using OnPostprocessBuild, we ensure all our steps are executed before running the player. /// The code is not pretty, but it's also temporary until we implement missing pipelines with their respective Run functions /// </summary> /// <param name="context"></param> /// <returns></returns> private BuildResult OnBuildSplit(BuildContext context) { var normalSteps = new List <Type>(); var postProcessSteps = new List <Type>(); bool buildPlayerStepEncountered = false; foreach (var b in BuildSteps) { if (buildPlayerStepEncountered) { postProcessSteps.Add(b.GetType()); } else { normalSteps.Add(b.GetType()); } if (b.GetType() == typeof(BuildPlayerStep)) { buildPlayerStepEncountered = true; } } var normalStepsCollection = new BuildStepCollection(normalSteps.ToArray()); s_CachedPostProcessCollection = new BuildStepCollection(postProcessSteps.ToArray()); s_CachedContext = context; var result = normalStepsCollection.Run(context); s_CachedPostProcessCollection = null; s_CachedContext = null; return(result); }
public void Constructor() { var steps = new BuildStepCollection(typeof(TestBuildStepA), typeof(TestBuildStepB)); Assert.That(steps.Select(step => step.GetType()), Is.EqualTo(new[] { typeof(TestBuildStepA), typeof(TestBuildStepB) })); }