internal static bool IsInstallInBuildFolderOption() { BuildTarget buildTarget = EditorUserBuildSettingsUtils.CalculateSelectedBuildTarget(); BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup; return(EditorUserBuildSettings.installInBuildFolder && PostprocessBuildPlayer.SupportsInstallInBuildFolder(buildTargetGroup, buildTarget) && (Unsupported.IsSourceBuild() || IsMetroPlayer(buildTarget))); }
private static void GUIBuildButtons(IBuildWindowExtension buildWindowExtension, bool enableBuildButton, bool enableBuildAndRunButton, bool canInstallInBuildFolder, BuildPlatform platform) { GUILayout.FlexibleSpace(); if (canInstallInBuildFolder) { GUILayout.BeginHorizontal(); EditorUserBuildSettings.installInBuildFolder = GUILayout.Toggle(EditorUserBuildSettings.installInBuildFolder, "Install in Builds folder\n(for debugging with source code)", GUILayout.ExpandWidth(false)); var content = new GUIContent(EditorGUI.GUIContents.helpIcon); content.tooltip = "Open documentation for debugging source code"; if (GUILayout.Button(content, EditorStyles.iconButton)) { var path = Path.Combine(Directory.GetParent(EditorApplication.applicationPath).FullName, "../../Documentation/BuildDocs/view_build_docs"); if (Application.platform == RuntimePlatform.WindowsEditor) { System.Diagnostics.Process.Start(path + ".cmd"); } else { System.Diagnostics.Process.Start("/bin/bash", path); } } GUILayout.EndHorizontal(); } else { EditorUserBuildSettings.installInBuildFolder = false; } if ((buildWindowExtension != null) && Unsupported.IsSourceBuild()) { buildWindowExtension.ShowInternalPlatformBuildOptions(); } if (buildWindowExtension != null) { buildWindowExtension.ShowPlatformBuildWarnings(); } // Disable the 'Build' and 'Build And Run' buttons when the project setup doesn't satisfy the platform requirements if (!IsColorSpaceValid(platform) && enableBuildButton && enableBuildAndRunButton) { enableBuildAndRunButton = false; enableBuildButton = false; EditorGUILayout.HelpBox(styles.invalidColorSpaceMessage); } else if (!IsLightmapEncodingValid(platform) && enableBuildButton && enableBuildAndRunButton) { enableBuildAndRunButton = false; enableBuildButton = false; EditorGUILayout.HelpBox(styles.invalidLightmapEncodingMessage); } if (EditorApplication.isCompiling || EditorApplication.isUpdating) { enableBuildAndRunButton = false; enableBuildButton = false; EditorGUILayout.HelpBox(styles.compilingMessage); } GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (EditorGUILayout.LinkLabel(styles.learnAboutUnityCloudBuild)) { Application.OpenURL(string.Format("{0}/from/editor/buildsettings?upid={1}&pid={2}¤tplatform={3}&selectedplatform={4}&unityversion={5}", UnityEditorInternal.WebURLs.cloudBuildPage, CloudProjectSettings.projectId, PlayerSettings.productGUID, EditorUserBuildSettings.activeBuildTarget, EditorUserBuildSettingsUtils.CalculateSelectedBuildTarget(), Application.unityVersion)); } GUILayout.EndHorizontal(); // Space 6 for alignment with platform column and to reduce missclicks with Build And Run button GUILayout.Space(6); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUIContent buildButton = null; GUIContent buildAndRunButton = null; bool askForBuildLocation = true; if (buildWindowExtension != null) { buildWindowExtension.GetBuildButtonTitles(out buildButton, out buildAndRunButton); askForBuildLocation = buildWindowExtension.AskForBuildLocation(); } buildButton = buildButton ?? styles.build; buildAndRunButton = buildAndRunButton ?? styles.buildAndRun; // Switching build target in the editor BuildTarget selectedTarget = EditorUserBuildSettingsUtils.CalculateSelectedBuildTarget(); BuildTargetGroup selectedTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup; bool selectedTargetIsActive = EditorUserBuildSettings.activeBuildTarget == selectedTarget && EditorUserBuildSettings.activeBuildTargetGroup == selectedTargetGroup; if (selectedTargetIsActive) { // Build Button GUI.enabled = enableBuildButton; if (GUILayout.Button(buildButton, GUILayout.Width(Styles.kButtonWidth))) { CallBuildMethods(askForBuildLocation, BuildOptions.ShowBuiltPlayer); GUIUtility.ExitGUI(); } } else { GUI.enabled = BuildPipeline.IsBuildTargetSupported(selectedTargetGroup, selectedTarget) && EditorUserBuildSettings.activeBuildTargetGroup != selectedTargetGroup; if (GUILayout.Button(styles.switchPlatform, GUILayout.Width(Styles.kButtonWidth))) { EditorUserBuildSettings.SwitchActiveBuildTargetAsync(selectedTargetGroup, selectedTarget); GUIUtility.ExitGUI(); } } // Build and Run button GUI.enabled = enableBuildAndRunButton && selectedTargetIsActive; if (GUILayout.Button(buildAndRunButton, GUILayout.Width(Styles.kButtonWidth))) { BuildPlayerAndRun(askForBuildLocation); GUIUtility.ExitGUI(); } GUILayout.EndHorizontal(); }
void ShowBuildTargetSettings() { EditorGUIUtility.labelWidth = Mathf.Min(180, (position.width - 265) * 0.47f); BuildTarget buildTarget = EditorUserBuildSettingsUtils.CalculateSelectedBuildTarget(); BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup; BuildPlatform platform = BuildPlatforms.instance.BuildPlatformFromTargetGroup(buildTargetGroup); bool licensed = BuildPipeline.LicenseCheck(buildTarget); // Draw the group name GUILayout.Space(18); // Draw icon and text of title separately so we can control the space between them Rect r = GUILayoutUtility.GetRect(50, 36); r.x += 1; GUI.Label(new Rect(r.x + 3, r.y + 3, 32, 32), platform.title.image, GUIStyle.none); GUI.Toggle(r, false, platform.title.text, styles.platformSelector); GUILayout.Space(10); if (platform.targetGroup == BuildTargetGroup.WebGL && !BuildPipeline.IsBuildTargetSupported(platform.targetGroup, buildTarget)) { if (IntPtr.Size == 4) { GUILayout.Label("Building for WebGL requires a 64-bit Unity editor."); GUIBuildButtons(false, false, false, platform); return; } } string moduleName = Modules.ModuleManager.GetTargetStringFrom(buildTargetGroup, buildTarget); if (IsModuleNotInstalled(buildTargetGroup, buildTarget)) { GUILayout.Label(EditorGUIUtility.TextContent(string.Format(styles.noModuleLoaded, BuildPlatforms.instance.GetModuleDisplayName(buildTargetGroup, buildTarget)))); if (GUILayout.Button(styles.openDownloadPage, EditorStyles.miniButton, GUILayout.ExpandWidth(false))) { string url = GetPlaybackEngineDownloadURL(moduleName); Help.BrowseURL(url); } GUIBuildButtons(false, false, false, platform); return; } else if (Application.HasProLicense() && !InternalEditorUtility.HasAdvancedLicenseOnBuildTarget(buildTarget)) { // Show copy for using personal edition build targets with pro edition editor string infoText = string.Format(styles.infoText, BuildPlatforms.instance.GetBuildTargetDisplayName(buildTargetGroup, buildTarget)); GUILayout.BeginVertical(EditorStyles.helpBox); GUILayout.Label(infoText, EditorStyles.wordWrappedMiniLabel); GUILayout.BeginHorizontal(); if (GUILayout.Button(styles.eula, EditorStyles.miniButton)) { Application.OpenURL("http://unity3d.com/legal/eula"); } if (GUILayout.Button(string.Format(styles.addToYourPro, BuildPlatforms.instance.GetBuildTargetDisplayName(buildTargetGroup, buildTarget)), EditorStyles.miniButton)) { Application.OpenURL("http://unity3d.com/get-unity"); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); } GUIContent error = styles.GetDownloadErrorForTarget(buildTarget); if (error != null) { GUILayout.Label(error, EditorStyles.wordWrappedLabel); GUIBuildButtons(false, false, false, platform); return; } // Draw not licensed buy now UI if (!licensed) { string niceName = BuildPipeline.GetBuildTargetGroupDisplayName(buildTargetGroup); string licenseMsg = "Your license does not cover {0} Publishing."; string buttonMsg = "Go to Our Online Store"; if (BuildTargetDiscovery.PlatformHasFlag(buildTarget, TargetAttributes.IsConsole)) { licenseMsg += "Please see the {0} section of the Platform Module Installation documentation for more details."; buttonMsg = "Platform Module Installation"; } else if (BuildTargetDiscovery.PlatformHasFlag(buildTarget, TargetAttributes.IsStandalonePlatform)) { buttonMsg = ""; } GUIContent[] notLicensedMessage = { EditorGUIUtility.TextContent(string.Format(L10n.Tr(licenseMsg), niceName)), EditorGUIUtility.TextContent(L10n.Tr(buttonMsg)), new GUIContent(styles.shopURL) }; GUILayout.Label(notLicensedMessage[0], EditorStyles.wordWrappedLabel); GUILayout.Space(5); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (notLicensedMessage[1].text.Length != 0) { if (GUILayout.Button(notLicensedMessage[1])) { Application.OpenURL(notLicensedMessage[2].text); } } GUILayout.EndHorizontal(); GUIBuildButtons(false, false, false, platform); return; } // FIXME: WHY IS THIS ALL IN ONE FUNCTION?! // Draw the side bar to the right. Different options like specific Standalone player to build, profiling and debugging options, etc. string module = ModuleManager.GetTargetStringFrom(platform.targetGroup, buildTarget); IBuildWindowExtension buildWindowExtension = ModuleManager.GetBuildWindowExtension(module); if (buildWindowExtension != null) { buildWindowExtension.ShowPlatformBuildOptions(); } GUI.changed = false; GUI.enabled = true; bool enableBuildButton = buildWindowExtension != null?buildWindowExtension.EnabledBuildButton() : true; bool enableBuildAndRunButton = false; bool shouldDrawDebuggingToggle = buildWindowExtension != null?buildWindowExtension.ShouldDrawScriptDebuggingCheckbox() : true; bool shouldDrawExplicitNullChecksToggle = buildWindowExtension != null?buildWindowExtension.ShouldDrawExplicitNullCheckbox() : false; bool shouldDrawDivideByZeroChecksToggle = buildWindowExtension != null?buildWindowExtension.ShouldDrawExplicitDivideByZeroCheckbox() : false; bool shouldDrawArrayBoundsChecksToggle = buildWindowExtension != null?buildWindowExtension.ShouldDrawExplicitArrayBoundsCheckbox() : false; bool shouldDrawDevelopmentPlayerToggle = buildWindowExtension != null?buildWindowExtension.ShouldDrawDevelopmentPlayerCheckbox() : true; IBuildPostprocessor postprocessor = ModuleManager.GetBuildPostProcessor(buildTargetGroup, buildTarget); bool enableBuildScriptsOnly = (postprocessor != null ? postprocessor.SupportsScriptsOnlyBuild() : false); bool canInstallInBuildFolder = false; if (BuildPipeline.IsBuildTargetSupported(buildTargetGroup, buildTarget)) { bool shouldDrawConnectProfilerToggle = buildWindowExtension != null?buildWindowExtension.ShouldDrawProfilerCheckbox() : true; GUI.enabled = shouldDrawDevelopmentPlayerToggle; if (shouldDrawDevelopmentPlayerToggle) { EditorUserBuildSettings.development = EditorGUILayout.Toggle(styles.debugBuild, EditorUserBuildSettings.development); } bool developmentBuild = EditorUserBuildSettings.development; GUI.enabled = developmentBuild; if (shouldDrawConnectProfilerToggle) { if (!GUI.enabled) { if (!developmentBuild) { styles.profileBuild.tooltip = "Profiling only enabled in Development Player"; } } else { styles.profileBuild.tooltip = ""; } EditorUserBuildSettings.connectProfiler = EditorGUILayout.Toggle(styles.profileBuild, EditorUserBuildSettings.connectProfiler); } GUI.enabled = developmentBuild; if (shouldDrawDebuggingToggle) { using (new EditorGUI.DisabledScope(buildWindowExtension != null ? buildWindowExtension.ShouldDisableManagedDebuggerCheckboxes() : false)) { EditorUserBuildSettings.allowDebugging = EditorGUILayout.Toggle(styles.allowDebugging, EditorUserBuildSettings.allowDebugging); // Not all platforms have native dialog implemented in Runtime\Misc\GiveDebuggerChanceToAttachIfRequired.cpp // Display this option only for developer builds bool shouldDrawWaitForManagedDebugger = buildWindowExtension != null?buildWindowExtension.ShouldDrawWaitForManagedDebugger() : false; if (EditorUserBuildSettings.allowDebugging && shouldDrawWaitForManagedDebugger) { var buildTargetName = BuildPipeline.GetBuildTargetName(buildTarget); bool value = EditorGUILayout.Toggle(styles.waitForManagedDebugger, EditorUserBuildSettings.GetPlatformSettings(buildTargetName, kSettingDebuggingWaitForManagedDebugger) == "true"); EditorUserBuildSettings.SetPlatformSettings(buildTargetName, kSettingDebuggingWaitForManagedDebugger, value.ToString().ToLower()); } } if (EditorUserBuildSettings.allowDebugging && PlayerSettings.GetScriptingBackend(buildTargetGroup) == ScriptingImplementation.IL2CPP) { var apiCompatibilityLevel = PlayerSettings.GetApiCompatibilityLevel(buildTargetGroup); bool isDebuggerUsable = apiCompatibilityLevel == ApiCompatibilityLevel.NET_4_6 || apiCompatibilityLevel == ApiCompatibilityLevel.NET_Standard_2_0; if (!isDebuggerUsable) { EditorGUILayout.HelpBox("Script debugging is only supported with IL2CPP on .NET 4.x and .NET Standard 2.0 API Compatibility Levels.", MessageType.Warning); } } } if (shouldDrawExplicitNullChecksToggle) { // Force 'ExplicitNullChecks' to true if it's a development build. GUI.enabled = !developmentBuild; if (GUI.enabled == false) { EditorUserBuildSettings.explicitNullChecks = true; } EditorUserBuildSettings.explicitNullChecks = EditorGUILayout.Toggle(styles.explicitNullChecks, EditorUserBuildSettings.explicitNullChecks); // Undo force from above GUI.enabled = developmentBuild; } if (shouldDrawDivideByZeroChecksToggle) { // Force 'explicitDivideByZeroChecks' to true if it's a development build. GUI.enabled = !developmentBuild; if (GUI.enabled == false) { EditorUserBuildSettings.explicitDivideByZeroChecks = true; } EditorUserBuildSettings.explicitDivideByZeroChecks = EditorGUILayout.Toggle(styles.explicitDivideByZeroChecks, EditorUserBuildSettings.explicitDivideByZeroChecks); // Undo force from above GUI.enabled = developmentBuild; } if (shouldDrawArrayBoundsChecksToggle) { // Force 'explicitArrayBoundsChecks' to true if it's a development build. GUI.enabled = !developmentBuild; if (GUI.enabled == false) { EditorUserBuildSettings.explicitArrayBoundsChecks = true; } EditorUserBuildSettings.explicitArrayBoundsChecks = EditorGUILayout.Toggle(styles.explicitArrayBoundsChecks, EditorUserBuildSettings.explicitArrayBoundsChecks); // Undo force from above GUI.enabled = developmentBuild; } if (buildWindowExtension != null && enableBuildScriptsOnly) { buildWindowExtension.DoScriptsOnlyGUI(); } GUI.enabled = true; GUILayout.FlexibleSpace(); if (postprocessor != null && postprocessor.SupportsLz4Compression()) { var cmpIdx = Array.IndexOf(styles.compressionTypes, EditorUserBuildSettings.GetCompressionType(buildTargetGroup)); if (cmpIdx == -1) { cmpIdx = 1; // Lz4 by default. } cmpIdx = EditorGUILayout.Popup(styles.compressionMethod, cmpIdx, styles.compressionStrings); EditorUserBuildSettings.SetCompressionType(buildTargetGroup, styles.compressionTypes[cmpIdx]); } canInstallInBuildFolder = Unsupported.IsSourceBuild() && PostprocessBuildPlayer.SupportsInstallInBuildFolder(buildTargetGroup, buildTarget); if (enableBuildButton) { enableBuildAndRunButton = buildWindowExtension != null?buildWindowExtension.EnabledBuildAndRunButton() && !(EditorUserBuildSettings.installInBuildFolder) : !(EditorUserBuildSettings.installInBuildFolder); } } else { GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true)); GUILayout.BeginVertical(GUILayout.ExpandWidth(true)); GUILayout.Label(string.Format(L10n.Tr("{0} is not supported in this build.\nDownload a build that supports it."), BuildPipeline.GetBuildTargetGroupDisplayName(buildTargetGroup))); GUILayout.EndVertical(); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); } if (buildTarget == BuildTarget.Android) { AndroidPublishGUI(); } GUIBuildButtons(buildWindowExtension, enableBuildButton, enableBuildAndRunButton, canInstallInBuildFolder, platform); }
internal static BuildPlayerOptions GetBuildPlayerOptionsInternal(bool askForBuildLocation, BuildPlayerOptions defaultBuildPlayerOptions) { var options = defaultBuildPlayerOptions; bool updateExistingBuild = false; BuildTarget buildTarget = EditorUserBuildSettingsUtils.CalculateSelectedBuildTarget(); BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup; // Pick location for the build string newLocation = ""; bool installInBuildFolder = EditorUserBuildSettings.installInBuildFolder && PostprocessBuildPlayer.SupportsInstallInBuildFolder(buildTargetGroup, buildTarget) && (Unsupported.IsSourceBuild() || IsMetroPlayer(buildTarget)); //Check if Lz4 is supported for the current buildtargetgroup and enable it if need be if (PostprocessBuildPlayer.SupportsLz4Compression(buildTargetGroup, buildTarget)) { if (EditorUserBuildSettings.GetCompressionType(buildTargetGroup) == Compression.Lz4) { options.options |= BuildOptions.CompressWithLz4; } else if (EditorUserBuildSettings.GetCompressionType(buildTargetGroup) == Compression.Lz4HC) { options.options |= BuildOptions.CompressWithLz4HC; } } bool developmentBuild = EditorUserBuildSettings.development; if (developmentBuild) { options.options |= BuildOptions.Development; } if (EditorUserBuildSettings.datalessPlayer && developmentBuild) { options.options |= BuildOptionsExperimental.DatalessPlayer; } if (EditorUserBuildSettings.allowDebugging && developmentBuild) { options.options |= BuildOptions.AllowDebugging; } if (EditorUserBuildSettings.symlinkLibraries) { options.options |= BuildOptions.SymlinkLibraries; } if (EditorUserBuildSettings.enableHeadlessMode) { options.options |= BuildOptions.EnableHeadlessMode; } if (EditorUserBuildSettings.connectProfiler && (developmentBuild || buildTarget == BuildTarget.WSAPlayer)) { options.options |= BuildOptions.ConnectWithProfiler; } if (EditorUserBuildSettings.buildScriptsOnly) { options.options |= BuildOptions.BuildScriptsOnly; } if (installInBuildFolder) { options.options |= BuildOptions.InstallInBuildFolder; } if (!installInBuildFolder) { if (askForBuildLocation && !PickBuildLocation(buildTargetGroup, buildTarget, options.options, out updateExistingBuild)) { throw new BuildMethodException(); } newLocation = EditorUserBuildSettings.GetBuildLocation(buildTarget); if (newLocation.Length == 0) { throw new BuildMethodException("Build location for buildTarget " + buildTarget.ToString() + "is not valid."); } if (!askForBuildLocation) { switch (UnityEditorInternal.InternalEditorUtility.BuildCanBeAppended(buildTarget, newLocation)) { case CanAppendBuild.Unsupported: break; case CanAppendBuild.Yes: updateExistingBuild = true; break; case CanAppendBuild.No: if (!PickBuildLocation(buildTargetGroup, buildTarget, options.options, out updateExistingBuild)) { throw new BuildMethodException(); } newLocation = EditorUserBuildSettings.GetBuildLocation(buildTarget); if (!BuildLocationIsValid(newLocation)) { throw new BuildMethodException("Build location for buildTarget " + buildTarget.ToString() + "is not valid."); } break; } } } if (updateExistingBuild) { options.options |= BuildOptions.AcceptExternalModificationsToPlayer; } options.target = buildTarget; options.targetGroup = buildTargetGroup; options.locationPathName = EditorUserBuildSettings.GetBuildLocation(buildTarget); options.assetBundleManifestPath = null; // Build a list of scenes that are enabled ArrayList scenesList = new ArrayList(); EditorBuildSettingsScene[] editorScenes = EditorBuildSettings.scenes; foreach (EditorBuildSettingsScene scene in editorScenes) { if (scene.enabled) { scenesList.Add(scene.path); } } options.scenes = scenesList.ToArray(typeof(string)) as string[]; return(options); }
private void ShowGeneral(string searchContext) { // Options bool collabEnabled = Collab.instance.IsCollabEnabledForCurrentProject(); using (new EditorGUI.DisabledScope(collabEnabled)) { if (collabEnabled) { EditorGUILayout.Toggle(GeneralProperties.autoRefresh, true); // Don't keep toggle value in m_AutoRefresh since we don't want to save the overwritten value EditorGUILayout.HelpBox(GeneralProperties.autoRefreshHelpBox); } else { m_AutoRefresh = EditorGUILayout.Toggle(GeneralProperties.autoRefresh, m_AutoRefresh); } } m_ReopenLastUsedProjectOnStartup = EditorGUILayout.Toggle(GeneralProperties.loadPreviousProjectOnStartup, m_ReopenLastUsedProjectOnStartup); bool oldCompressOnImport = m_CompressAssetsOnImport; m_CompressAssetsOnImport = EditorGUILayout.Toggle(GeneralProperties.compressAssetsOnImport, oldCompressOnImport); if (GUI.changed && m_CompressAssetsOnImport != oldCompressOnImport) { Unsupported.SetApplicationSettingCompressAssetsOnImport(m_CompressAssetsOnImport); } if (Application.platform == RuntimePlatform.OSXEditor) { m_UseOSColorPicker = EditorGUILayout.Toggle(GeneralProperties.osxColorPicker, m_UseOSColorPicker); } bool pro = UnityEngine.Application.HasProLicense(); using (new EditorGUI.DisabledScope(!pro)) { m_EnableEditorAnalytics = !EditorGUILayout.Toggle(GeneralProperties.disableEditorAnalytics, !m_EnableEditorAnalytics) || !pro && !m_EnableEditorAnalytics; } bool assetStoreSearchChanged = false; EditorGUI.BeginChangeCheck(); m_ShowAssetStoreSearchHits = EditorGUILayout.Toggle(GeneralProperties.showAssetStoreSearchHits, m_ShowAssetStoreSearchHits); if (EditorGUI.EndChangeCheck()) { assetStoreSearchChanged = true; } m_VerifySavingAssets = EditorGUILayout.Toggle(GeneralProperties.verifySavingAssets, m_VerifySavingAssets); m_ScriptCompilationDuringPlay = (ScriptChangesDuringPlayOptions)EditorGUILayout.EnumPopup(GeneralProperties.scriptChangesDuringPlay, m_ScriptCompilationDuringPlay); // Only show this toggle if this is a source build or we're already in developer mode. // We don't want to show this to users yet. if (Unsupported.IsSourceBuild() || m_DeveloperMode) { EditorGUI.BeginChangeCheck(); m_DeveloperMode = EditorGUILayout.Toggle("Developer Mode", m_DeveloperMode); if (EditorGUI.EndChangeCheck()) { m_DeveloperModeDirty = true; } } using (new EditorGUI.DisabledScope(!pro)) { int newSkin = EditorGUILayout.Popup(GeneralProperties.editorSkin, !EditorGUIUtility.isProSkin ? 0 : 1, GeneralProperties.editorSkinOptions); if ((!EditorGUIUtility.isProSkin ? 0 : 1) != newSkin) { InternalEditorUtility.SwitchSkinAndRepaintAllViews(); } } bool oldAlphaNumeric = m_AllowAlphaNumericHierarchy; m_AllowAlphaNumericHierarchy = EditorGUILayout.Toggle(GeneralProperties.enableAlphaNumericSorting, m_AllowAlphaNumericHierarchy); if (InternalEditorUtility.IsGpuDeviceSelectionSupported()) { // Cache gpu devices if (m_CachedGpuDevices == null) { var devices = InternalEditorUtility.GetGpuDevices(); m_CachedGpuDevices = new string[devices.Length + 1]; m_CachedGpuDevices[0] = "Automatic"; Array.Copy(devices, 0, m_CachedGpuDevices, 1, devices.Length); } // Try to find selected gpu device var currentGpuDeviceIndex = Array.FindIndex(m_CachedGpuDevices, gpuDevice => m_GpuDevice == gpuDevice); if (currentGpuDeviceIndex == -1) { currentGpuDeviceIndex = 0; } var newGpuDeviceIndex = EditorGUILayout.Popup("Device To Use", currentGpuDeviceIndex, m_CachedGpuDevices); if (currentGpuDeviceIndex != newGpuDeviceIndex) { m_GpuDevice = m_CachedGpuDevices[newGpuDeviceIndex]; InternalEditorUtility.SetGpuDeviceAndRecreateGraphics(newGpuDeviceIndex - 1, m_GpuDevice); } } m_EnableCodeCoverage = EditorGUILayout.Toggle(GeneralProperties.codeCoverageEnabled, m_EnableCodeCoverage); if (m_EnableCodeCoverage != Coverage.enabled) { EditorGUILayout.HelpBox((m_EnableCodeCoverage ? "Enabling " : "Disabling ") + "Code Coverage will not take effect until Unity is restarted.", MessageType.Warning); } ApplyChangesToPrefs(); if (oldAlphaNumeric != m_AllowAlphaNumericHierarchy) { EditorApplication.DirtyHierarchyWindowSorting(); } if (assetStoreSearchChanged) { ProjectBrowser.ShowAssetStoreHitsWhileSearchingLocalAssetsChanged(); } }
public static bool IsDeveloperBuild() { return(Unsupported.IsSourceBuild()); }