Exemplo n.º 1
0
    static void CommandLineBuildAndroid()
    {
        Debug.Log("Command line build Android version\n------------------\n------------------");

        string[] scenes = UnityBuild_HelperMethods.GetBuildScenes();
        string   path   = "D:/Unity Projects/Publishing files/AutomatedUnityBuilds/GameyFire.apk";

        EditorUserBuildSettings.SetBuildLocation(BuildTarget.Android, path);
        if (scenes == null || scenes.Length == 0 || path == null)
        {
            return;
        }

        Debug.Log(string.Format("Path: \"{0}\"", path));
        for (int i = 0; i < scenes.Length; ++i)
        {
            Debug.Log(string.Format("Scene[{0}]: \"{1}\"", i, scenes[i]));
        }

        //Debug.Log(string.Format("Creating Directory \"{0}\" if it does not exist", path));
        //(new FileInfo(path)).Directory.Create();

        Debug.Log(string.Format("Switching Build Target to {0}", "Android"));
        EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTarget.Android);

        Debug.Log("Starting Android Build!");
        BuildPipeline.BuildPlayer(scenes, EditorUserBuildSettings.GetBuildLocation(BuildTarget.Android), BuildTarget.Android, BuildOptions.None);
    }
Exemplo n.º 2
0
        public virtual string GetBuiltNameForTarget(BuildTarget NewTarget)
        {
            string BuiltName = "";

            bool bAndroid = false;

            if (NewTarget == BuildTarget.Android)
            {
                BuiltName = GetParamOrConfigString("BuiltAndroidName");
                bAndroid  = true;
            }

            if (BuiltName == "")
            {
                BuiltName = Path.GetFileName(EditorUserBuildSettings.GetBuildLocation(NewTarget));
            }

            if (BuiltName == "")
            {
                if (bAndroid)
                {
                    BuiltName = "Android";
                }
            }

            if (!BuiltName.EndsWith(".apk"))
            {
                BuiltName += ".apk";
            }

            return(BuiltName);
        }
Exemplo n.º 3
0
        static BuildPlayerOptions GetBuildPlayerOptions(
            bool askForLocation = false,
            BuildPlayerOptions defaultOptions = new BuildPlayerOptions())
        {
            // Fake BuildLocation path to prevent Unity exception
            var activeBuildTarget = EditorUserBuildSettings.activeBuildTarget;
            var buildLocation     = EditorUserBuildSettings.GetBuildLocation(activeBuildTarget);

            // Making sure that current BuildLocation is valid, otherwise create new proper one.
            // New created location will be like: .../<ProjectRoot>/Builds/<BuildTarget>

            switch (InternalEditorUtility.BuildCanBeAppended(activeBuildTarget, buildLocation))
            {
            case CanAppendBuild.No:
            case CanAppendBuild.Unsupported:
                var newBuildLocation = CombinePaths(DefaultBuildLocation, "build");
                EditorUserBuildSettings.SetBuildLocation(activeBuildTarget, newBuildLocation);
                break;
            }

            // Get static internal "GetBuildPlayerOptionsInternal" method and invoke it
            var method = typeof(BuildPlayerWindow.DefaultBuildMethods).GetMethod(
                "GetBuildPlayerOptionsInternal",
                BindingFlags.NonPublic | BindingFlags.Static);

            return((BuildPlayerOptions)method.Invoke(
                       null,
                       new object[] { askForLocation, defaultOptions }));
        }
Exemplo n.º 4
0
        // workaround for https://issuetracker.unity3d.com/issues/plugins-not-copied-to-the-standalone-plugin-folder-when-they-are-marked-to-be-included-in-build
        private static void CopyPluginsForStandaloneBuildIfRequired(BuildTarget buildTarget)
        {
            if (PlatformHelpers.IsStandaloneOSX(buildTarget))
            {
                const string pluginBundle = "StreamAlpha.bundle";

                foreach (var pluginImporter in PluginImporter.GetImporters(buildTarget))
                {
                    if (pluginImporter.assetPath.EndsWith(pluginBundle))
                    {
                        var appDirectory = EditorUserBuildSettings.GetBuildLocation(buildTarget);
                        var destination  = Path.Combine(appDirectory, Path.Combine("Contents/Plugins/", pluginBundle));
                        var source       = pluginImporter.assetPath;

                        bool shouldCopy = !Directory.Exists(destination) ||
                                          GetLastSourceWriteTimeUtc(source) > GetLastSourceWriteTimeUtc(destination);

                        if (shouldCopy)
                        {
                            CopyDirectoryRecursive(source, destination);
                        }
                    }
                }
            }
        }
Exemplo n.º 5
0
    /// <summary>
    /// TODO: remove this once all the bugs are worked out. This saves us a little
    /// time by avoiding having to run the full Unity build every time we want to
    /// validate the post process.
    /// </summary>
    private static void ShowRerunButton()
    {
        // Displaying the current build location serves as a reminder to the user what is going on.
        var  currentBuildLocation = EditorUserBuildSettings.GetBuildLocation(BuildTarget.iOS);
        bool hasBuildLocation     = !string.IsNullOrEmpty(currentBuildLocation);

        if (hasBuildLocation)
        {
            currentBuildLocation = PathExt.Abs2Rel(currentBuildLocation);
        }
        else
        {
            currentBuildLocation = "<N/A>";
        }

        GUILayout.Label(
            string.Format(
                "Current Build Location: {0}",
                currentBuildLocation));

        if (hasBuildLocation && GUILayout.Button("Run post-build process"))
        {
            OnPostBuild(BuildTarget.iOS, currentBuildLocation);
        }
        else
        {
            GUILayout.Label("Please run build process for iOS.");
        }
    }
Exemplo n.º 6
0
        /// <summary>
        /// Show a dialog to let the user pick a build location.
        /// </summary>
        /// <remarks>
        /// Based on BuildPlayerWindow.PickBuildLocation in private Unity engine code.
        /// </remarks>
        static string PickBuildLocation(BuildTarget target)
        {
            var buildLocation = EditorUserBuildSettings.GetBuildLocation(target);

            if (target == BuildTarget.Android && EditorUserBuildSettings.exportAsGoogleAndroidProject)
            {
                var location = EditorUtility.SaveFolderPanel("Export Google Android Project", buildLocation, "");
                return(location);
            }

            string directory = "", filename = "";

            if (!string.IsNullOrEmpty(buildLocation))
            {
                directory = Path.GetDirectoryName(buildLocation);
                filename  = Path.GetFileName(buildLocation);
            }

            // Call internal method:
            // string SaveBuildPanel(BuildTarget target, string title, string directory, string defaultName, string extension, out bool updateExistingBuild)
            var method = typeof(EditorUtility).GetMethod("SaveBuildPanel", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);

            if (method == null)
            {
                Debug.LogError("Could no find SaveBuildPanel method on EditorUtility class.");
                return(null);
            }

            var args = new object[] { target, "Build " + target, directory, filename, "", null };
            var path = (string)method.Invoke(null, args);

            return(path);
        }
        public void Load()
        {
            // Define 'BUILD_PIPELINE_IOS_UNITY_DEFAULT' if you want to set a build location as same as default of Unity Editor
            // But it's buggy because the native doesn't generate the new folder to put a build.
#if BUILD_PIPELINE_IOS_UNITY_DEFAULT
            buildPath = PlayerPrefs.GetString(PREFS_SETTINGS_BUILD_PATH, EditorUserBuildSettings.GetBuildLocation(BuildTarget.iOS));
#else
            buildPath = PlayerPrefs.GetString(PREFS_SETTINGS_BUILD_PATH, string.Empty);
#endif
            nameFormat      = PlayerPrefs.GetString(PREFS_SETTINGS_NAME_FORMAT, "{package}_{date}");
            dateTimeFormat  = PlayerPrefs.GetString(PREFS_SETTINGS_DATE_TIME_FORMAT, "yyyyMMddHHmmss");
            createNewFolder = PlayerPrefs.GetString(PREFS_SETTINGS_CREATE_NEW_FOLDER, bool.TrueString) == bool.TrueString;
            setURLSchemes   = PlayerPrefs.GetString(PREFS_SETTINGS_SET_URL_SCHEMES, bool.FalseString) == bool.TrueString;
            if (PlayerPrefs.HasKey(PREFS_SETTINGS_URL_SCHEMES))
            {
                string str = PlayerPrefs.GetString(PREFS_SETTINGS_URL_SCHEMES, string.Empty);
                if (str != null && str.Length > 0)
                {
                    urlSchemes = str.Split('|');
                }
                else
                {
                    urlSchemes = new string[0];
                }
            }
            else
            {
                urlSchemes = new string[0];
            }
            buildOptions = (BuildOptions)PlayerPrefs.GetInt(PREFS_SETTINGS_BUILD_OPTIONS, 0);
        }
        public void Load()
        {
            // Define 'BUILD_PIPELINE_ANDROID_UNITY_DEFAULT' if you want to set a build location as same as default of Unity Editor
            // But it's buggy because it will include default file name too.
#if BUILD_PIPELINE_ANDROID_UNITY_DEFAULT
            buildPath = PlayerPrefs.GetString(PREFS_SETTINGS_BUILD_PATH, EditorUserBuildSettings.GetBuildLocation(BuildTarget.Android));
#else
            buildPath = PlayerPrefs.GetString(PREFS_SETTINGS_BUILD_PATH, string.Empty);
#endif
            nameFormat      = PlayerPrefs.GetString(PREFS_SETTINGS_NAME_FORMAT, "{package}_{date}");
            dateTimeFormat  = PlayerPrefs.GetString(PREFS_SETTINGS_DATE_TIME_FORMAT, "yyyyMMddHHmmss");
            incrementBundle = PlayerPrefs.GetString(PREFS_SETTINGS_INCREMENT_BUNDLE, bool.FalseString) == bool.TrueString;
            buildOptions    = (BuildOptions)PlayerPrefs.GetInt(PREFS_SETTINGS_BUILD_OPTIONS, 0);

            useKeystore = PlayerPrefs.GetString(PREFS_SETTINGS_USE_KEYSTORE, bool.FalseString) == bool.TrueString;

            keystoreName = PlayerPrefs.GetString(PREFS_SETTINGS_KEYSTORE_NAME, PlayerSettings.Android.keystoreName);

            keyaliasName = PlayerPrefs.GetString(PREFS_SETTINGS_KEYALIAS_NAME, string.Empty);

            var keystorePassEncoded = PlayerPrefs.GetString(PREFS_SETTINGS_KEYSTORE_PASS, string.Empty);
            if (!string.IsNullOrEmpty(keystorePassEncoded))
            {
                keystorePass = Encoding.ASCII.GetString(Convert.FromBase64String(keystorePassEncoded));
            }

            var keyaliasPassEncoded = PlayerPrefs.GetString(PREFS_SETTINGS_KEYALIAS_PASS, string.Empty);
            if (!string.IsNullOrEmpty(keyaliasPassEncoded))
            {
                keyaliasPass = Encoding.ASCII.GetString(Convert.FromBase64String(keyaliasPassEncoded));
            }
        }
        //
        // Opens the jsgz and/or the js file in the current webgl build folder
        // and inserts devicePixelRatio accordingly to add support for retina/hdpi
        //
        //[MenuItem("Hbx/WebGL Tools/Retina Fix Release Build", false, 11)]
        public static void RetinaFixReleaseBuild(string buildOverridePath = "")
        {
            UnityEngine.Debug.Log("WebGLRetinaTools: Fix release build started.");

            // get path of the last webgl build or use over ride path
            string webglBuildPath    = string.IsNullOrEmpty(buildOverridePath) ? EditorUserBuildSettings.GetBuildLocation(BuildTarget.WebGL) : buildOverridePath;
            string releaseFolderPath = Path.Combine(webglBuildPath, RelFolder);

            if (string.IsNullOrEmpty(releaseFolderPath))
            {
                UnityEngine.Debug.LogError("WebGLRetinaTools: WebGL build path is empty, have you created a release WebGL build yet?");
                return;
            }

            // check there is a release folder
            if (!Directory.Exists(releaseFolderPath))
            {
                UnityEngine.Debug.LogError("WebGLRetinaTools: Couldn't find Release folder for WebGL build at path:\n" + releaseFolderPath);
                return;
            }

            // find source files in release folder and fix
            string[] sourceFiles = FindSourceFilesInBuildFolder(releaseFolderPath);
            foreach (string sourceFile in sourceFiles)
            {
                FixSourceFile(sourceFile, true);
            }

            UnityEngine.Debug.Log("WebGLRetinaTools: Fixed " + sourceFiles.Length + " release source files.");

            EditorUtility.ClearProgressBar();
        }
Exemplo n.º 10
0
        private static void OpenBuildData()
        {
            string fullPathOfExe = EditorUserBuildSettings.GetBuildLocation(EditorUserBuildSettings.activeBuildTarget);
            string appDirectory  = Path.GetDirectoryName(fullPathOfExe);
            string dataPath      = $"{appDirectory}/{Path.GetFileNameWithoutExtension(fullPathOfExe)}_Data";

            Process.Start(dataPath);
        }
Exemplo n.º 11
0
 private void OnEnable()
 {
     outputPath = EditorUserBuildSettings.GetBuildLocation(BuildTarget.StandaloneWindows64);
     if (string.IsNullOrEmpty(outputPath))
     {
         outputPath = Path.GetFullPath(Path.Combine(Application.dataPath, "../Build/Were.Wolf.exe"));
     }
 }
Exemplo n.º 12
0
    public void OnProcessScene(UnityEngine.SceneManagement.Scene scene)
    {
        string path                = EditorUserBuildSettings.GetBuildLocation(EditorUserBuildSettings.activeBuildTarget);
        int    last_slash          = path.LastIndexOf('/');
        string pointCloudDirectory = path.Substring(0, last_slash + 1);

        foreach (var gameObject in scene.GetRootGameObjects())
        {
            PlayableDirector director = gameObject.GetComponent <PlayableDirector>();
            if (director != null)
            {
                if (director.playableAsset != null)
                {
                    TimelineAsset timeline = (TimelineAsset)director.playableAsset;

                    foreach (var track in timeline.GetOutputTracks())
                    {
                        foreach (var clip in track.GetClips())
                        {
                            if (clip.asset.GetType() == typeof(PointCloudClip))
                            {
                                uint clip_start_frame        = (uint)clip.clipIn * 30;
                                uint clip_duration_in_frames = (uint)clip.duration * 30;
                                uint clip_end_frame          = clip_start_frame + clip_duration_in_frames;

                                string[]       files = new string[0];
                                PointCloudClip pcc   = (PointCloudClip)clip.asset;
                                if (Directory.Exists(pcc.template.PointCloudDirectory.Substring(1)))
                                {
                                    files = Directory.GetFiles(pcc.template.PointCloudDirectory.Substring(1));
                                }

                                foreach (var file in files)
                                {
                                    Directory.CreateDirectory(pointCloudDirectory + pcc.template.PointCloudDirectory);

                                    int  last_dot_in_filename   = file.LastIndexOf('.');
                                    int  last_slash_in_filename = file.LastIndexOf('\\');
                                    int  no_length = last_dot_in_filename - last_slash_in_filename - 1;
                                    uint file_no   = UInt32.Parse(file.Substring(last_slash_in_filename + 1, no_length));

                                    if (file_no >= clip_start_frame &&
                                        file_no <= clip_end_frame)
                                    {
                                        if (!File.Exists(pointCloudDirectory + '/' + file))
                                        {
                                            File.Copy(file, pointCloudDirectory + '/' + file);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
Exemplo n.º 13
0
    public static void BuildProject()
    {
        bool abortBuild = false;

        if (System.IO.Directory.Exists(Application.dataPath + "/Scripts/Profiler") &&
            !System.IO.Directory.Exists(Application.dataPath + "/Editor/Profiler"))
        {
            System.IO.Directory.Move(Application.dataPath + "/Scripts/Profiler", Application.dataPath + "/Editor/Profiler");
        }

        if (System.IO.Directory.Exists(Application.dataPath + "/Scripts/Profiler.meta") &&
            !System.IO.Directory.Exists(Application.dataPath + "/Editor/Profiler.meta"))
        {
            System.IO.File.Move(Application.dataPath + "/Scripts/Profiler.meta", Application.dataPath + "/Editor/Profiler.meta");
        }

        AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
        string[] scenes = new string[EditorBuildSettings.scenes.Length];
        for (int i = 0; i < scenes.Length; ++i)
        {
            scenes[i] = EditorBuildSettings.scenes[i].path;
        }


#if UNITY_ANDROID
        EditorUserBuildSettings.appendProject = false;

        string savePath = EditorUtility.SaveFilePanel("Build " + BuildTarget.Android,
                                                      EditorUserBuildSettings.GetBuildLocation(BuildTarget.Android), "", "apk");
        if (savePath.Length != 0)
        {
            // Reset build location and name
//	        string dir = System.IO.Path.GetDirectoryName(savePath);
            EditorUserBuildSettings.SetBuildLocation(BuildTarget.Android, savePath);
        }
        else
        {
            abortBuild = true;
        }
#else
        EditorUserBuildSettings.appendProject = true;
#endif
        if (!abortBuild)
        {
            UpdateBuildNumber();

            BuildPipeline.BuildPlayer(scenes, EditorUserBuildSettings.GetBuildLocation(EditorUserBuildSettings.activeBuildTarget),
                                      EditorUserBuildSettings.activeBuildTarget, BuildOptions.AcceptExternalModificationsToPlayer);
        }

        //TODO: this is project specific. We should find a way to externalize it from this generic build tool.
        System.IO.Directory.Move(Application.dataPath + "/Editor/Profiler", Application.dataPath + "/Scripts/Profiler");
        System.IO.File.Move(Application.dataPath + "/Editor/Profiler.meta", Application.dataPath + "/Scripts/Profiler.meta");
        AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
    }
Exemplo n.º 14
0
        public Params()
        {
            Target = BuildUtils.SelectedBuildTarget;

            BuildOptions buildOptions = BuildOptions.None;

            if (!UnityEditorInternal.InternalEditorUtility.inBatchMode)
            {
                if (EditorUserBuildSettings.allowDebugging)
                {
                    buildOptions |= BuildOptions.AllowDebugging;
                }

                if (EditorUserBuildSettings.development)
                {
                    buildOptions |= BuildOptions.Development;
                }

                if (EditorUserBuildSettings.appendProject)
                {
                    buildOptions |= BuildOptions.AcceptExternalModificationsToPlayer;
                }

                if (EditorUserBuildSettings.symlinkLibraries)
                {
                    buildOptions |= BuildOptions.SymlinkLibraries;
                }

                if (EditorUserBuildSettings.connectProfiler)
                {
                    buildOptions |= BuildOptions.ConnectWithProfiler;
                }

                if (EditorUserBuildSettings.installInBuildFolder)
                {
                    buildOptions |= BuildOptions.InstallInBuildFolder;
                }

                if (EditorUserBuildSettings.webPlayerOfflineDeployment)
                {
                    buildOptions |= BuildOptions.WebPlayerOfflineDeployment;
                }

                AndroidSubtarget = EditorUserBuildSettings.androidBuildSubtarget;
            }

            Options = buildOptions;

            string buildLocation = EditorUserBuildSettings.GetBuildLocation(Target);

            if (!string.IsNullOrEmpty(buildLocation))
            {
                Location = buildLocation;
            }
        }
Exemplo n.º 15
0
        public static void PerformDefaultBuildContext()
        {
            BuildTarget defaultTarget = new BuildTarget();

            defaultTarget.name            = "Default";
            defaultTarget.target          = EditorUserBuildSettings.activeBuildTarget;
            defaultTarget.targetGroup     = EditorUserBuildSettings.selectedBuildTargetGroup;
            defaultTarget.options         = BuildOptions.None;
            defaultTarget.outputDirectory = EditorUserBuildSettings.GetBuildLocation(defaultTarget.target);
            Builder.BuildTarget(defaultTarget);
        }
Exemplo n.º 16
0
        static void BuildAssetBundlesForBuild()
        {
            string assetBundleDirectory = EditorUserBuildSettings.GetBuildLocation(EditorUserBuildSettings.activeBuildTarget).Replace(".exe", "_Data/StreamingAssets");

            if (!Directory.Exists(assetBundleDirectory))
            {
                UnityEngine.Debug.LogError("Can not find Build you need to build at least once ");
                return;
            }
            BuildAllAssetBundles(assetBundleDirectory);
        }
        static void MakeBuild()
        {
            BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();

            buildPlayerOptions.scenes           = GetAllScenes();
            buildPlayerOptions.locationPathName =
                EditorUserBuildSettings.GetBuildLocation(EditorUserBuildSettings.activeBuildTarget);
            buildPlayerOptions.target  = EditorUserBuildSettings.activeBuildTarget;
            buildPlayerOptions.options = BuildOptions.None;
            BuildPipeline.BuildPlayer(buildPlayerOptions);
        }
    public static BuildPlayerOptions GetCurrentBuildPlayerOptions(BuildTarget target, string[] arguments)
    {
        var targetGroup = BuildPipeline.GetBuildTargetGroup(target);
        var options     = new BuildPlayerOptions
        {
            target           = target,
            targetGroup      = targetGroup,
            locationPathName = EditorUserBuildSettings.GetBuildLocation(target),
        };

        return(UpdateBuildPlayerOptions(options, arguments, false));
    }
Exemplo n.º 19
0
 public static void RunBuild()
 {
     try
     {
         string path = EditorUserBuildSettings.GetBuildLocation(EditorUserBuildSettings.activeBuildTarget);
         System.Diagnostics.Process.Start(path);
     }
     catch
     {
         Debug.LogError("Any build found, you need to build at least once");
     }
 }
Exemplo n.º 20
0
        private static void GetBuildLocation(EditorPluginModel model)
        {
            var path = EditorUserBuildSettings.GetBuildLocation(EditorUserBuildSettings.selectedStandaloneTarget);

            if (PluginSettings.SystemInfoRiderPlugin.operatingSystemFamily == OperatingSystemFamilyRider.MacOSX)
            {
                path = Path.Combine(Path.Combine(Path.Combine(path, "Contents"), "MacOS"), PlayerSettings.productName);
            }
            if (!string.IsNullOrEmpty(path) && File.Exists(path))
            {
                model.BuildLocation.Value = path;
            }
        }
    static void Build(bool autorun)
    {
        if (!Application.HasProLicense())
        {
            Debug.LogError("PRO license needed to run Multires tool");
            return;
        }

        // Get build path
        string buildPath = EditorUserBuildSettings.GetBuildLocation(EditorUserBuildSettings.activeBuildTarget);

        if (buildPath.Length == 0)
        {
            Debug.LogError("Build path not set.");
            return;
        }

        // Get scenes
        List <string> sceneList = new List <string>();

        EditorBuildSettingsScene[] selectedScenes = EditorBuildSettings.scenes;
        foreach (EditorBuildSettingsScene scene in selectedScenes)
        {
            if (scene.enabled)
            {
                sceneList.Add(scene.path);
            }
        }

        GameObject[] objects = FindObjectsOfType <GameObject>();

        Multires._bDisableUpdate = true;
        PreparePrefabs();
        RemoveSpriteReferences(objects);

        BuildPipeline.BuildPlayer(
            sceneList.ToArray(),
            buildPath,
            EditorUserBuildSettings.activeBuildTarget, autorun ? BuildOptions.AutoRunPlayer : BuildOptions.None
            );

        Debug.Log("Post build");
        ResetReferences(FindObjectsOfType <GameObject>());
        ResetPrefabsReferences();
        Multires._bDisableUpdate = false;
    }
Exemplo n.º 22
0
    static string GetBuildLocation(BuildTarget buildTarget)
    {
        string[] args = System.Environment.GetCommandLineArgs();
        int      indexOfBuildLocation = System.Array.IndexOf(args, BUILD_LOCATION);

        if (indexOfBuildLocation >= 0)
        {
            indexOfBuildLocation++;
            Debug.Log(string.Format("Build Location for {0} set to {1}", buildTarget.ToString(), args[indexOfBuildLocation]));
            return(args[indexOfBuildLocation]);
        }
        else
        {
            Debug.Log(string.Format("Build Location for {0} not set. Defaulting to {1}", buildTarget.ToString(),
                                    EditorUserBuildSettings.GetBuildLocation(buildTarget)));
            return(EditorUserBuildSettings.GetBuildLocation(buildTarget));
        }
    }
Exemplo n.º 23
0
        static string GetBuildLocation(BuildTarget buildTarget, string defaultLocation)
        {
            var args = Environment.GetCommandLineArgs();
            var indexOfBuildLocation = Array.IndexOf(args, ArgsBuildLocation);

            if (indexOfBuildLocation >= 0)
            {
                indexOfBuildLocation++;
                Debug.Log(string.Format("Build Location for {0} set to {1}", buildTarget, args[indexOfBuildLocation]));
                return(args[indexOfBuildLocation]);
            }

            var location = EditorUserBuildSettings.GetBuildLocation(buildTarget);

            location = defaultLocation.Length != 0 ? defaultLocation : location;
            Debug.Log(string.Format("Build Location for {0} not set. Defaulting to {1}", buildTarget, location));
            return(location);
        }
Exemplo n.º 24
0
        public static void AfterBuildIsDone(BuildTarget target, string pathToBuiltProject)
        {
            if (Application.isEditor)
            {
                if (showOptions)
                {
                    devTracker.history.Add(System.DateTime.Now.ToString() +
                                           "\nVersion: " + devTracker.version +
                                           "\nIteration " + devTracker.build.ToString() + "\nDescription:\n" +
                                           devTracker.description + "\n" +
                                           EditorUserBuildSettings.GetBuildLocation(EditorUserBuildSettings.activeBuildTarget));
                    bundleVersionCounter = 0;
                    bundleCodeWentUp     = false;
                    showOptions          = false;

                    EditorUtility.SetDirty(devTracker);
                }
            }
        }
        public void Load()
        {
            // Define 'BUILD_PIPELINE_WEBGL_UNITY_DEFAULT' if you want to set a build location as same as default of Unity Editor
            // But it's buggy because the native doesn't generate the new folder to put a build.
#if BUILD_PIPELINE_WEBGL_UNITY_DEFAULT
            buildPath = PlayerPrefs.GetString(PREFS_SETTINGS_BUILD_PATH, EditorUserBuildSettings.GetBuildLocation(BuildTarget.WebGL));
#else
            buildPath = PlayerPrefs.GetString(PREFS_SETTINGS_BUILD_PATH, string.Empty);
#endif
            nameFormat         = PlayerPrefs.GetString(PREFS_SETTINGS_NAME_FORMAT, "{package}_{date}");
            dateTimeFormat     = PlayerPrefs.GetString(PREFS_SETTINGS_DATE_TIME_FORMAT, "yyyyMMddHHmmss");
            stripMobileWarning = PlayerPrefs.GetString(PREFS_SETTINGS_STRIP_MOBILE_WARNING, bool.FalseString) == bool.TrueString;
            createNewFolder    = PlayerPrefs.GetString(PREFS_SETTINGS_CREATE_NEW_FOLDER, bool.TrueString) == bool.TrueString;
            linkerTarget       = (WebGLLinkerTarget)PlayerPrefs.GetInt(PREFS_SETTINGS_LINKER_TARGET, (int)PlayerSettings.WebGL.linkerTarget);
            memorySize         = PlayerPrefs.GetInt(PREFS_SETTINGS_MEMORY_SIZE, PlayerSettings.WebGL.memorySize);
            compressionFormat  = (WebGLCompressionFormat)PlayerPrefs.GetInt(PREFS_SETTINGS_COMPRESSION_FORMAT, (int)PlayerSettings.WebGL.compressionFormat);
            wasmStreaming      = PlayerPrefs.GetString(PREFS_SETTINGS_WASM_STREAMING, PlayerSettings.WebGL.wasmStreaming ? bool.TrueString : bool.FalseString) == bool.TrueString;
            buildOptions       = (BuildOptions)PlayerPrefs.GetInt(PREFS_SETTINGS_BUILD_OPTIONS, 0);
        }
Exemplo n.º 26
0
        public static void Build()
        {
            LanguageFixPreprocessBuild.FixLanguage();
            string bundleVersion = PlayerSettings.bundleVersion;

            AssetDatabaseHelper.CreateFolderRecursive("/Assets/Fort/Resources");
            string path = Path.Combine(Application.dataPath, "Fort/Resources/Version.txt");

            using (StreamWriter writer = new StreamWriter(path))
            {
                writer.Write(bundleVersion);
            }
            AssetDatabase.Refresh();
            BuildPipeline.BuildPlayer(EditorBuildSettings.scenes.Select(scene => scene.path).ToArray(), EditorUserBuildSettings.GetBuildLocation(EditorUserBuildSettings.activeBuildTarget), EditorUserBuildSettings.activeBuildTarget, BuildOptions.None);
            string buildLocation = EditorUserBuildSettings.GetBuildLocation(EditorUserBuildSettings.activeBuildTarget);
            string argument      = "/select, \"" + buildLocation.Replace("/", "\\") + "\"";

            Process.Start("explorer.exe", argument);
        }
Exemplo n.º 27
0
        private string PickBuildLocation()
        {
            var target       = EditorUserBuildSettings.activeBuildTarget;
            var targetGroup  = BuildPipeline.GetBuildTargetGroup(target);
            var lastLocation = EditorUserBuildSettings.GetBuildLocation(target);
            var extension    = PostprocessBuildPlayer.GetExtensionForBuildTarget(targetGroup, target, BuildOptions.None);
            var defaultName  = FileUtil.GetLastPathNameComponent(lastLocation);

            lastLocation = string.IsNullOrEmpty(lastLocation) ? string.Empty : Path.GetDirectoryName(lastLocation);
            bool updateExistingBuild;
            var  location = EditorUtility.SaveBuildPanel(target, $"{GetBuildText()} {target}", lastLocation, defaultName, extension,
                                                         out updateExistingBuild);

            if (!string.IsNullOrEmpty(location))
            {
                EditorUserBuildSettings.SetBuildLocation(target, location);
            }
            return(location);
        }
Exemplo n.º 28
0
    static void SetiOSBuildPath()
    {
                #if UNITY_IOS
        AdjustEditor.iOSBuildPath = EditorUtility.OpenFolderPanel(
            title: "iOs build path",
            folder: EditorUserBuildSettings.GetBuildLocation(BuildTarget.iPhone),
            defaultName: "");

        if (AdjustEditor.iOSBuildPath == "")
        {
            UnityEngine.Debug.Log("iOS build path reset to default path");
        }
        else
        {
            UnityEngine.Debug.Log(string.Format("iOS build path: {0}", AdjustEditor.iOSBuildPath));
        }
                #else
        EditorUtility.DisplayDialog("Adjust", "Option only valid for the Android platform.", "OK");
                #endif
    }
Exemplo n.º 29
0
    void DoBuild()
    {
        // Update latest version's date/time to reflect build
        build.CurrentVersion.date = DateTime.Now;
        Save();

        string buildLocation = EditorUserBuildSettings.GetBuildLocation(EditorUserBuildSettings.activeBuildTarget);

        if (!string.IsNullOrEmpty(buildLocation))
        {
//			string[] dlls = Directory.GetFiles("Assets/Plugins", "*.dll");
//			foreach (string dll in dlls)
//				File.Copy(dll, Path.GetDirectoryName(buildLocation) + "/" + Path.GetFileName(dll), true);

            BuildPipeline.BuildPlayer(
                EditorBuildSettings.scenes.Where(scene => scene.enabled).Select(scene => scene.path).ToArray(),
                buildLocation,
                EditorUserBuildSettings.activeBuildTarget,
                BuildOptions.ShowBuiltPlayer);

            File.WriteAllText(buildLocation + "/ReleaseNotes.txt", GetReleaseNotes());
        }
    }
Exemplo n.º 30
0
        /// <summary>
        /// Generates path to builds. Has 2 options:
        /// <list type="bullet">
        ///     <item>
        ///         <description>If result path is the file: <br/><![CDATA[
        ///         <builds_root>/<product_name> <version>[.<target>]/<product_name>[.<specifyName>].<extension>
        ///         ]]> <br/> e.g. <b>/Builds/my_app 2.1.234/my_app.exe</b> or<br/>
        ///         <b>/Builds/my_app 2.1.234.Android/my_app.ARMv7.apk</b>
        ///         </description>
        ///     </item>
        ///     <item>
        ///         <description>If result path is the directory: <br/><![CDATA[
        ///         <builds_root>/<product_name> <version>[.<target>][.<specifyName>]
        ///         ]]> <br/> e.g. <b>/Builds/my_app 2.1.234.iOS</b>
        ///         </description>
        ///     </item>
        /// </list> Where <i>builds_root</i> - build location defined in Unity Build Settings window,
        /// <i>product_name</i> - Product name from Player Settings,
        /// <i>product_name</i> - file extension depending on the target.
        /// If user not define build location for current target, folder panel will open.
        /// </summary>
        /// <param name="target">Target of build</param>
        /// <param name="version">Version of build</param>
        /// <param name="specifyTarget">Default is <i>true</i>. If <i>true</i> then
        /// name of target will be present in the returned path.</param>
        /// <param name="specifyName">Optional</param>
        /// <returns>Generated path to builds</returns>
        /// <exception cref="OperationCanceledException">User closed folder panel.</exception>
        public static string GetBuildPath(BuildTarget target, string version, bool specifyTarget = true, string specifyName = null)
        {
            var pathBuild     = EditorUserBuildSettings.GetBuildLocation(target);
            var fileExtension = BuildLocationFileExtension(target);

            if (string.IsNullOrEmpty(pathBuild))
            {
                var title = string.Format("Select folder for {0} builds for this project", target);
                pathBuild = EditorUtility.OpenFolderPanel(title, "", "");
                if (pathBuild == null)
                {
                    throw new OperationCanceledException("User cancel build");
                }
                if (fileExtension != null)
                {
                    pathBuild += "/" + PlayerSettings.productName + fileExtension;
                }
                EditorUserBuildSettings.SetBuildLocation(target, pathBuild);
            }

            var targetStr  = specifyTarget ? "." + BuiltTargetToPrettyString(target) : "";
            var specifyExt = string.IsNullOrEmpty(specifyName) ? "" : "." + specifyName;

            if (fileExtension != null)
            {
                var pathSeparators = new char[] { '/', '\\' };
                var subLength      = Math.Min(Math.Max(0, pathBuild.LastIndexOfAny(pathSeparators)), pathBuild.Length);
                pathBuild = pathBuild.Substring(0, subLength).TrimEnd(pathSeparators);
                return(string.Format("{0}/{1} {2}{3}/{1}{4}{5}",
                                     pathBuild, PlayerSettings.productName, version, targetStr, specifyExt, fileExtension));
            }
            else
            {
                return(string.Format("{0}/{1} {2}{3}{4}",
                                     pathBuild, PlayerSettings.productName, version, targetStr, specifyExt));
            }
        }