private List <QualitySetting> GetQualitySettings() { // Pull the quality settings from the runtime. var qualitySettings = new List <QualitySetting>(); foreach (SerializedProperty prop in m_QualitySettingsProperty) { var qs = new QualitySetting { m_Name = prop.FindPropertyRelative("name").stringValue, m_PropertyPath = prop.propertyPath }; qs.m_PropertyPath = prop.propertyPath; var platforms = new List <string>(); var platformsProp = prop.FindPropertyRelative("excludedTargetPlatforms"); foreach (SerializedProperty platformProp in platformsProp) { platforms.Add(platformProp.stringValue); } qs.m_ExcludedPlatforms = platforms; qualitySettings.Add(qs); } return(qualitySettings); }
void InitLightMap() { // 保险起见,只在Iphone上进行处理 #if UNITY_IPHONE // 低配机型,为了节省内存删除lightmapDir贴图 if (QualitySetting.GetAdviceGraphicLevel() == 2) { LightmapSettings.lightmapsMode = LightmapsMode.NonDirectional; var lightMaps = LightmapSettings.lightmaps;//当前场景中已经存在的lightmap数据 if (lightMaps == null) { return; } for (int i = 0; i < lightMaps.Length; i++) { var lightmapData = lightMaps[i]; var lightmapDir = lightmapData.lightmapDir; if (lightmapDir != null) { GameObject.DestroyImmediate(lightmapDir, true); lightmapData.lightmapDir = null; } } ; } #endif }
private QualitySetting LoadQualitySettingFromXml(SecurityElement element) { QualitySetting setting = new QualitySetting(); setting.qualityLevel = StrParser.ParseDecInt(element.Attribute("QualityLevel"), setting.qualityLevel); setting.border = StrParser.ParseStr(element.Attribute("Border"), ""); return(setting); }
private QualitySetting CreateFastSettings() { QualitySetting setting = new QualitySetting(true); setting.Name = "Low"; setting.ShadowCascades = ShadowCascades.NoCascades; setting.ShadowDistance = 20; setting.SkinWeights = SkinWeights.TwoBones; setting.LodBias = 0.4f; setting.ParticleRaycastBudget = 16; return(setting); }
private QualitySetting CreateFastestSettings() { QualitySetting setting = new QualitySetting(true); setting.Name = "Very Low"; setting.ShadowCascades = ShadowCascades.NoCascades; setting.ShadowDistance = 15; setting.SkinWeights = SkinWeights.OneBone; setting.TextureQuality = TextureQuality.HalfRes; setting.LodBias = 0.3f; setting.ParticleRaycastBudget = 4; return(setting); }
private QualitySetting CreateSimpleSettings() { QualitySetting setting = new QualitySetting(true); setting.Name = "Medium"; setting.PixelLightCount = 1; setting.Shadows = ShadowQuality.HardOnly; setting.ShadowCascades = ShadowCascades.NoCascades; setting.ShadowDistance = 20; setting.SkinWeights = SkinWeights.TwoBones; setting.AnisotropicTextures = AnisotropicFiltering.Enable; setting.VSyncCount = VSyncCount.EveryVBlank; setting.LodBias = 0.7f; setting.ParticleRaycastBudget = 64; return(setting); }
private void Awake() { if (Singleton != null) { Destroy(gameObject); return; } Singleton = this; if (transform.parent == null) { DontDestroyOnLoad(gameObject); } Application.targetFrameRate = 60; }
private QualitySetting CreateGoodSettings() { QualitySetting setting = new QualitySetting(true); setting.Name = "High"; setting.PixelLightCount = 2; setting.Shadows = ShadowQuality.All; setting.ShadowResolution = ShadowResolution.Medium; setting.ShadowCascades = ShadowCascades.TwoCascades; setting.ShadowDistance = 40; setting.SkinWeights = SkinWeights.TwoBones; setting.AnisotropicTextures = AnisotropicFiltering.Enable; setting.AntiAliasing = AntiAliasing._2X; setting.SoftVegetation = true; setting.VSyncCount = VSyncCount.EveryVBlank; setting.LodBias = 1.0f; setting.ParticleRaycastBudget = 256; return(setting); }
private QualitySetting CreateFantasticSettings() { QualitySetting setting = new QualitySetting(true); setting.Name = "Ultra"; setting.PixelLightCount = 4; setting.Shadows = ShadowQuality.All; setting.ShadowResolution = ShadowResolution.High; setting.ShadowCascades = ShadowCascades.FourCascades; setting.ShadowDistance = 150; setting.ShadowmaskMode = ShadowmaskMode.DistanceShadowmask; setting.SkinWeights = SkinWeights.FourBones; setting.AnisotropicTextures = AnisotropicFiltering.Enable; setting.AntiAliasing = AntiAliasing._4X; setting.SoftParticles = true; setting.SoftVegetation = true; setting.RealtimeReflectionProbes = true; setting.BillboardsFaceCameraPosition = true; setting.VSyncCount = VSyncCount.EveryVBlank; setting.LodBias = 2.0f; setting.ParticleRaycastBudget = 4096; return(setting); }
private QualitySetting CreateBeautifulSettings() { QualitySetting setting = new QualitySetting(true); setting.Name = "Very High"; setting.PixelLightCount = 3; setting.Shadows = ShadowQuality.All; setting.ShadowResolution = ShadowResolution.High; setting.ShadowCascades = ShadowCascades.TwoCascades; setting.ShadowDistance = 40; setting.ShadowmaskMode = ShadowmaskMode.DistanceShadowmask; setting.BlendWeights = BlendWeights.FourBones; setting.AnisotropicTextures = AnisotropicFiltering.Enable; setting.AntiAliasing = AntiAliasing._4X; setting.SoftParticles = true; setting.SoftVegetation = true; setting.RealtimeReflectionProbes = true; setting.BillboardsFaceCameraPosition = true; setting.VSyncCount = VSyncCount.EveryVBlank; setting.LodBias = 1.5f; setting.ParticleRaycastBudget = 1024; return(setting); }
void Awake() { if (Instance != null) { Debug.LogError("QuadTreeSceneManager inited many times!"); Destroy(this); return; } Instance = this; if (QualitySetting.IsVeryLowIPhone()) { MAX_CACHE_NUM = 5; DIE_TIME = 5; } else { MAX_CACHE_NUM = 10; DIE_TIME = 10; } InvokeRepeating("ReleaseTooOld", DIE_TIME, DIE_TIME); }
private int DoQualityLevelSelection(int currentQualitylevel, IList <QualitySetting> qualitySettings, Dictionary <string, int> platformDefaultQualitySettings) { GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayout.FlexibleSpace(); GUILayout.BeginVertical(new GUILayoutOption[0]); int num = currentQualitylevel; GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.ExpandWidth(false), GUILayout.Width(80f), GUILayout.Height(20f) }; Rect position = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, options); position.x += EditorGUI.indent; position.width -= EditorGUI.indent; GUI.Label(position, "Levels", EditorStyles.boldLabel); foreach (BuildPlayerWindow.BuildPlatform platform in this.m_ValidPlatforms) { GUILayoutOption[] optionArray2 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(20f) }; Rect rect2 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray2); GUIContent content = EditorGUIUtility.TempContent(platform.smallIcon); content.tooltip = platform.name; GUI.Label(rect2, content); content.tooltip = string.Empty; } GUILayoutOption[] optionArray3 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(20f) }; GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray3); GUILayout.EndHorizontal(); Event current = Event.current; for (int i = 0; i < qualitySettings.Count; i++) { GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUIStyle style = ((i % 2) != 0) ? Styles.kListOddBg : Styles.kListEvenBg; bool on = num == i; GUILayoutOption[] optionArray4 = new GUILayoutOption[] { GUILayout.ExpandWidth(false), GUILayout.Width(80f) }; Rect rect3 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray4); switch (current.type) { case EventType.MouseDown: if (rect3.Contains(current.mousePosition)) { num = i; GUIUtility.keyboardControl = 0; GUIUtility.hotControl = this.m_QualityElementHash; Dragging dragging = new Dragging { m_StartPosition = i, m_Position = i }; this.m_Dragging = dragging; current.Use(); } break; case EventType.MouseUp: if (GUIUtility.hotControl == this.m_QualityElementHash) { GUIUtility.hotControl = 0; current.Use(); } break; case EventType.MouseDrag: if ((GUIUtility.hotControl == this.m_QualityElementHash) && rect3.Contains(current.mousePosition)) { this.m_Dragging.m_Position = i; current.Use(); } break; case EventType.KeyDown: if ((current.keyCode == KeyCode.UpArrow) || (current.keyCode == KeyCode.DownArrow)) { num += (current.keyCode != KeyCode.UpArrow) ? 1 : -1; num = Mathf.Clamp(num, 0, qualitySettings.Count - 1); GUIUtility.keyboardControl = 0; current.Use(); } break; case EventType.Repaint: { style.Draw(rect3, GUIContent.none, false, false, on, false); QualitySetting setting = qualitySettings[i]; GUI.Label(rect3, EditorGUIUtility.TempContent(setting.m_Name)); break; } } foreach (BuildPlayerWindow.BuildPlatform platform2 in this.m_ValidPlatforms) { bool flag2 = false; if (platformDefaultQualitySettings.ContainsKey(platform2.name) && (platformDefaultQualitySettings[platform2.name] == i)) { flag2 = true; } GUILayoutOption[] optionArray5 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f) }; Rect rect4 = GUILayoutUtility.GetRect(Styles.kPlatformTooltip, Styles.kToggle, optionArray5); if (Event.current.type == EventType.Repaint) { style.Draw(rect4, GUIContent.none, false, false, on, false); } Color backgroundColor = GUI.backgroundColor; if (flag2 && !EditorApplication.isPlayingOrWillChangePlaymode) { GUI.backgroundColor = Color.green; } QualitySetting setting2 = qualitySettings[i]; bool flag3 = !setting2.m_ExcludedPlatforms.Contains(platform2.name); bool flag4 = GUI.Toggle(rect4, flag3, Styles.kPlatformTooltip, !flag2 ? Styles.kToggle : Styles.kDefaultToggle); if (flag3 != flag4) { if (flag4) { QualitySetting setting3 = qualitySettings[i]; setting3.m_ExcludedPlatforms.Remove(platform2.name); } else { QualitySetting setting4 = qualitySettings[i]; setting4.m_ExcludedPlatforms.Add(platform2.name); } } GUI.backgroundColor = backgroundColor; } GUILayoutOption[] optionArray6 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f) }; Rect rect5 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray6); if (Event.current.type == EventType.Repaint) { style.Draw(rect5, GUIContent.none, false, false, on, false); } if (GUI.Button(rect5, Styles.kIconTrash, GUIStyle.none)) { this.m_DeleteLevel = i; } GUILayout.EndHorizontal(); } GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayoutOption[] optionArray7 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(1f) }; GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray7); DrawHorizontalDivider(); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayoutOption[] optionArray8 = new GUILayoutOption[] { GUILayout.ExpandWidth(false), GUILayout.Width(80f), GUILayout.Height(20f) }; Rect rect6 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray8); rect6.x += EditorGUI.indent; rect6.width -= EditorGUI.indent; GUI.Label(rect6, "Default", EditorStyles.boldLabel); foreach (BuildPlayerWindow.BuildPlatform platform3 in this.m_ValidPlatforms) { int num3; GUILayoutOption[] optionArray9 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(20f) }; Rect rect7 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray9); if (!platformDefaultQualitySettings.TryGetValue(platform3.name, out num3)) { platformDefaultQualitySettings.Add(platform3.name, 0); } if (< > f__am$cache8 == null) {
public override void Read(AssetReader reader) { base.Read(reader); if (IsReadDefaultStandaloneQuality(reader.Version)) { QualityLevel defaultStandaloneQuality = (QualityLevel)reader.ReadInt32(); QualityLevel defaultWebPlayerQuality = (QualityLevel)reader.ReadInt32(); m_perPlatformDefaultQuality = new Dictionary <string, int>(); SetDefaultPlatformQuality(m_perPlatformDefaultQuality); m_perPlatformDefaultQuality[BuildTargetGroup.Standalone.ToExportString()] = (int)defaultStandaloneQuality; m_perPlatformDefaultQuality[BuildTargetGroup.WebPlayer.ToExportString()] = (int)defaultStandaloneQuality; } if (IsReadDefaultMobileQuality(reader.Version)) { QualityLevel defaultMobileQuality = (QualityLevel)reader.ReadInt32(); m_perPlatformDefaultQuality[BuildTargetGroup.Android.ToExportString()] = (int)defaultMobileQuality; m_perPlatformDefaultQuality[BuildTargetGroup.iOS.ToExportString()] = (int)defaultMobileQuality; } CurrentQuality = reader.ReadInt32(); if (IsReadQualitySettingArray(reader.Version)) { m_qualitySettings = reader.ReadAssetArray <QualitySetting>(); } else { m_qualitySettings = new QualitySetting[6]; QualitySetting fastest = reader.ReadAsset <QualitySetting>(); fastest.Name = nameof(QualityLevel.Fastest); m_qualitySettings[(int)QualityLevel.Fastest] = fastest; QualitySetting fast = reader.ReadAsset <QualitySetting>(); fast.Name = nameof(QualityLevel.Fast); m_qualitySettings[(int)QualityLevel.Fast] = fast; QualitySetting simple = reader.ReadAsset <QualitySetting>(); simple.Name = nameof(QualityLevel.Simple); m_qualitySettings[(int)QualityLevel.Simple] = simple; QualitySetting good = reader.ReadAsset <QualitySetting>(); good.Name = nameof(QualityLevel.Good); m_qualitySettings[(int)QualityLevel.Good] = good; QualitySetting beautiful = reader.ReadAsset <QualitySetting>(); beautiful.Name = nameof(QualityLevel.Beautiful); m_qualitySettings[(int)QualityLevel.Beautiful] = beautiful; QualitySetting fantastic = reader.ReadAsset <QualitySetting>(); fantastic.Name = nameof(QualityLevel.Fantastic); m_qualitySettings[(int)QualityLevel.Fantastic] = fantastic; } foreach (QualitySetting setting in m_qualitySettings) { switch (setting.Name) { case nameof(QualityLevel.Fastest): case "Very Low": QualitySetting fastest = CreateFastestSettings(); setting.Merge(fastest, reader.Version, reader.Flags); break; case nameof(QualityLevel.Fast): case "Low": QualitySetting fast = CreateFastSettings(); setting.Merge(fast, reader.Version, reader.Flags); break; case nameof(QualityLevel.Simple): case "Medium": QualitySetting simple = CreateSimpleSettings(); setting.Merge(simple, reader.Version, reader.Flags); break; case nameof(QualityLevel.Good): case "High": QualitySetting good = CreateGoodSettings(); setting.Merge(good, reader.Version, reader.Flags); break; case nameof(QualityLevel.Beautiful): case "Very High": QualitySetting beautiful = CreateBeautifulSettings(); setting.Merge(beautiful, reader.Version, reader.Flags); break; case nameof(QualityLevel.Fantastic): case "Ultra": default: QualitySetting fantastic = CreateFantasticSettings(); setting.Merge(fantastic, reader.Version, reader.Flags); break; } } if (IsReadWebPlayer(reader.Version)) { QualitySetting webPlayer = reader.ReadAsset <QualitySetting>(); webPlayer.Name = "WebPlayer"; } #if UNIVERSAL if (IsReadPerPlatformDefaultQuality(reader.Version, reader.Flags)) { m_perPlatformDefaultQuality = new Dictionary <string, int>(); m_perPlatformDefaultQuality.Read(reader); } #endif if (IsReadStrippedMaximumLODLevel(reader.Version, reader.Flags)) { StrippedMaximumLODLevel = reader.ReadInt32(); } }
public static string GetAssetBundleSuffix(this QualitySetting set) { return("quality-" + set.ToString().ToLower()); }