Example #1
0
 // Build the client
 public static string BuildClient(BuildTarget target, string directory, string applicationName, BuildConfiguration config)
 {
     if (!System.IO.Directory.Exists(directory + "/" + ""))                                                                                  // If directory doesnt exist
     {
         System.IO.Directory.CreateDirectory(directory + "/" + applicationName);                                                             // Create it
     }
     Debug.Log("Building Player, Directory: " + directory + "/" + applicationName);                                                          // Debug "building"
     return(UnityEditor.BuildPipeline.BuildPlayer(GetBuildSettings(target.platform, directory + "/" + applicationName, config)).ToString()); // Build player and return debug result
 }
Example #2
0
        // Get BuildSettings object
        static BuildPlayerOptions GetBuildSettings(UnityEditor.BuildTarget target, string path, BuildConfiguration config)
        {
            BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();      // Create new BuildPlayerOptions
            List <string>      paths = new List <string>();                        // Create new list for paths

            foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes) // Iterate scenes
            {
                paths.Add(scene.path);                                             // Add to path list
            }
            string[] scenes = paths.ToArray();                                     // Convert to array
            buildPlayerOptions.scenes           = scenes;                          // Set scenes
            buildPlayerOptions.locationPathName = path;                            // Set build path
            buildPlayerOptions.target           = target;                          // Set target
            buildPlayerOptions.options          = config.buildOption;              // Set options (development build)
            return(buildPlayerOptions);                                            // Return BuildPlayerOptions
        }
Example #3
0
        // Start Build Pipeline process
        public static IEnumerator ProcessBuildPipeline(BuildConfiguration config, ProjectSettings projectSettings)
        {
            if (config) // If the build configuration is not null
            {
                string outputPath = "";
                for (int t = 0; t < config.buildTargets.Count; t++)                                            // Iterate build targets
                {
                    BuildTarget target    = config.buildTargets[t];                                            // Get current target
                    string      directory = UnityEngine.Application.dataPath.Replace("/Assets", "/Builds");    // Get directory
                    if (target.nameOverride != null && target.nameOverride.Length > 0)                         // If use name override from the target
                    {
                        directory = target.nameOverride;                                                       // Use
                    }
                    else if (config.nameOverride != null && config.nameOverride.Length > 0)                    // Else if use name override from the whole config
                    {
                        directory = config.nameOverride;                                                       // Use
                    }
                    string applicationName = GetApplicationName(target, projectSettings, config.nameOverride); // Get application name

                    BuildSettings.SetApplicationSettings(target);

                    //Set Script logging settings
                    if (config.enableScriptLogging)
                    {
                        SetScriptLoggingParams(StackTraceLogType.Full);
                    }
                    else
                    {
                        SetScriptLoggingParams(StackTraceLogType.ScriptOnly);
                    }

                    if (SetGraphicsAPI(target) == false)                                                           // Check if Graphics API can be set to the specified target
                    {
                        Debug.LogError("Failed to build Player, Directory: " + directory + "/" + applicationName); // Log error
                        continue;                                                                                  // Go to next target
                    }

                    string build = BuildClient(target, directory, applicationName, config); // Build client
                    outputPath = directory;

                    while (UnityEditor.BuildPipeline.isBuildingPlayer == true)                      // Wait for build to finish
                    {
                        yield return(null);                                                         // Wait
                    }
                    if (build == "")                                                                // If build succeeded
                    {
                        Debug.Log("Built Player, Directory: " + directory + "/" + applicationName); // Log success
                    }
                    else // If build failed
                    {
                        Debug.LogError("Failed to build Player, Directory: " + directory + "/" + applicationName); // Log failure
                        Debug.LogError(build);                                                                     // Return build fail log
                    }
                }
                outputPath = outputPath.Replace(@"/", @"\");   // explorer doesn't like front slashes
                System.Diagnostics.Process.Start("explorer.exe", outputPath);
            }
            else // Null build configuartion
            {
                Debug.LogError("No Build Configuration file assigned. Please assign a Build Configuration file in the Build Pipeline window"); // Log error
            }
        }