using System; using System.Collections.Generic; using UnityEngine; namespace FairyGUI { /// /// Global configs. These options should be set before any UI construction. /// [AddComponentMenu("FairyGUI/UI Config")] public class UIConfig : MonoBehaviour { /// /// Dynamic Font Support. /// 4.x: Put the xxx.ttf into /Resources or /Resources/Fonts, and set defaultFont="xxx". /// 5.x: set defaultFont to system font name(or names joint with comma). e.g. defaultFont="Microsoft YaHei, SimHei" /// public static string defaultFont = ""; [Obsolete("No use anymore")] public static bool renderingTextBrighterOnDesktop = true; /// /// Resource using in Window.ShowModalWait for locking the window. /// public static string windowModalWaiting; /// /// Resource using in GRoot.ShowModalWait for locking the screen. /// public static string globalModalWaiting; /// /// When a modal window is in front, the background becomes dark. /// public static Color modalLayerColor = new Color(0f, 0f, 0f, 0.4f); /// /// Default button click sound. /// public static NAudioClip buttonSound; /// /// Default button click sound volume. /// public static float buttonSoundVolumeScale = 1f; /// /// Resource url of horizontal scrollbar /// public static string horizontalScrollBar; /// /// Resource url of vertical scrollbar /// public static string verticalScrollBar; /// /// Scrolling step in pixels /// 当调用ScrollPane.scrollUp/Down/Left/Right时,或者点击滚动条的上下箭头时,滑动的距离。 /// 鼠标滚轮触发一次滚动的距离设定为defaultScrollStep*2 /// public static float defaultScrollStep = 25; /// /// Deceleration ratio of scrollpane when its in touch dragging. /// 当手指拖动并释放滚动区域后,内容会滑动一定距离后停下,这个速率就是减速的速率。 /// 越接近1,减速越慢,意味着滑动的时间和距离更长。 /// 这个是全局设置,也可以通过ScrollPane.decelerationRate进行个性设置。 /// public static float defaultScrollDecelerationRate = 0.967f; /// /// Scrollbar display mode. Recommended 'Auto' for mobile and 'Visible' for web. /// public static ScrollBarDisplayType defaultScrollBarDisplay = ScrollBarDisplayType.Default; /// /// Allow dragging anywhere in container to scroll. /// public static bool defaultScrollTouchEffect = true; /// /// The "rebound" effect in the scolling container. /// public static bool defaultScrollBounceEffect = true; /// /// When the scrolling container is set to "snap to the item", the rolling distance threshold of which item is close to is determined. /// public static float defaultScrollSnappingThreshold = 0.5f; /// /// When the scrolling container is set to "page mode", it determines the scrolling distance threshold to which page to turn. /// public static float defaultScrollPagingThreshold = 0.3f; /// /// Resources url of PopupMenu. /// public static string popupMenu; /// /// Resource url of menu seperator. /// public static string popupMenu_seperator; /// /// In case of failure of loading content for GLoader, use this sign to indicate an error. /// public static string loaderErrorSign; /// /// Resource url of tooltips. /// public static string tooltipsWin; /// /// The number of visible items in ComboBox. /// public static int defaultComboBoxVisibleItemCount = 10; /// /// Pixel offsets of finger to trigger scrolling /// public static int touchScrollSensitivity = 20; /// /// Pixel offsets of finger to trigger dragging /// public static int touchDragSensitivity = 10; /// /// Pixel offsets of mouse pointer to trigger dragging. /// public static int clickDragSensitivity = 2; /// /// Allow softness on top or left side for scrollpane. /// public static bool allowSoftnessOnTopOrLeftSide = true; /// /// When click the window, brings to front automatically. /// public static bool bringWindowToFrontOnClick = true; /// /// /// public static float inputCaretSize = 1; /// /// /// public static Color inputHighlightColor = new Color32(255, 223, 141, 128); /// /// /// public static float frameTimeForAsyncUIConstruction = 0.002f; /// /// if RenderTexture using in painting mode has depth support. /// public static bool depthSupportForPaintingMode = true; /// /// Indicates whether to draw extra 4 or 8 times to achieve stroke effect for textfield. /// If it is true, that is the 8 times, otherwise it is the 4 times. /// public static bool enhancedTextOutlineEffect = false; [Obsolete("No use anymore.")] public static VertAlignType richTextRowVerticalAlign = VertAlignType.Bottom; /// /// Suggest to enable it on low dpi (e.g. 96dpi) screens. /// public static bool makePixelPerfect = false; public enum ConfigKey { DefaultFont, ButtonSound, ButtonSoundVolumeScale, HorizontalScrollBar, VerticalScrollBar, DefaultScrollStep, DefaultScrollBarDisplay, DefaultScrollTouchEffect, DefaultScrollBounceEffect, TouchScrollSensitivity, WindowModalWaiting, GlobalModalWaiting, PopupMenu, PopupMenu_seperator, LoaderErrorSign, TooltipsWin, DefaultComboBoxVisibleItemCount, TouchDragSensitivity, ClickDragSensitivity, ModalLayerColor, RenderingTextBrighterOnDesktop, AllowSoftnessOnTopOrLeftSide, InputCaretSize, InputHighlightColor, EnhancedTextOutlineEffect, DepthSupportForPaintingMode, RichTextRowVerticalAlign, Branch, PleaseSelect = 100 } [Serializable] public class ConfigValue { public bool valid; public string s; public int i; public float f; public bool b; public Color c; public void Reset() { valid = false; s = null; i = 0; f = 0; b = false; c = Color.black; } } public List Items = new List(); public List PreloadPackages = new List(); void Awake() { if (Application.isPlaying) { foreach (string packagePath in PreloadPackages) { UIPackage.AddPackage(packagePath); } Load(); } } public void Load() { int cnt = Items.Count; for (int i = 0; i < cnt; i++) { ConfigValue value = Items[i]; if (!value.valid) continue; switch ((UIConfig.ConfigKey)i) { case ConfigKey.ButtonSound: if (Application.isPlaying) UIConfig.buttonSound = UIPackage.GetItemAssetByURL(value.s) as NAudioClip; break; case ConfigKey.ButtonSoundVolumeScale: UIConfig.buttonSoundVolumeScale = value.f; break; case ConfigKey.ClickDragSensitivity: UIConfig.clickDragSensitivity = value.i; break; case ConfigKey.DefaultComboBoxVisibleItemCount: UIConfig.defaultComboBoxVisibleItemCount = value.i; break; case ConfigKey.DefaultFont: UIConfig.defaultFont = value.s; break; case ConfigKey.DefaultScrollBarDisplay: UIConfig.defaultScrollBarDisplay = (ScrollBarDisplayType)value.i; break; case ConfigKey.DefaultScrollBounceEffect: UIConfig.defaultScrollBounceEffect = value.b; break; case ConfigKey.DefaultScrollStep: UIConfig.defaultScrollStep = value.i; break; case ConfigKey.DefaultScrollTouchEffect: UIConfig.defaultScrollTouchEffect = value.b; break; case ConfigKey.GlobalModalWaiting: UIConfig.globalModalWaiting = value.s; break; case ConfigKey.HorizontalScrollBar: UIConfig.horizontalScrollBar = value.s; break; case ConfigKey.LoaderErrorSign: UIConfig.loaderErrorSign = value.s; break; case ConfigKey.ModalLayerColor: UIConfig.modalLayerColor = value.c; break; case ConfigKey.PopupMenu: UIConfig.popupMenu = value.s; break; case ConfigKey.PopupMenu_seperator: UIConfig.popupMenu_seperator = value.s; break; case ConfigKey.TooltipsWin: UIConfig.tooltipsWin = value.s; break; case ConfigKey.TouchDragSensitivity: UIConfig.touchDragSensitivity = value.i; break; case ConfigKey.TouchScrollSensitivity: UIConfig.touchScrollSensitivity = value.i; break; case ConfigKey.VerticalScrollBar: UIConfig.verticalScrollBar = value.s; break; case ConfigKey.WindowModalWaiting: UIConfig.windowModalWaiting = value.s; break; case ConfigKey.AllowSoftnessOnTopOrLeftSide: UIConfig.allowSoftnessOnTopOrLeftSide = value.b; break; case ConfigKey.InputCaretSize: UIConfig.inputCaretSize = value.i; break; case ConfigKey.InputHighlightColor: UIConfig.inputHighlightColor = value.c; break; case ConfigKey.DepthSupportForPaintingMode: UIConfig.depthSupportForPaintingMode = value.b; break; case ConfigKey.EnhancedTextOutlineEffect: UIConfig.enhancedTextOutlineEffect = value.b; break; case ConfigKey.Branch: UIPackage.branch = value.s; break; } } } public static void SetDefaultValue(ConfigKey key, ConfigValue value) { switch (key) { case ConfigKey.ButtonSoundVolumeScale: value.f = 1; break; case ConfigKey.ClickDragSensitivity: value.i = 2; break; case ConfigKey.DefaultComboBoxVisibleItemCount: value.i = 10; break; case ConfigKey.DefaultScrollBarDisplay: value.i = (int)ScrollBarDisplayType.Default; break; case ConfigKey.DefaultScrollBounceEffect: case ConfigKey.DefaultScrollTouchEffect: value.b = true; break; case ConfigKey.DefaultScrollStep: value.i = 25; break; case ConfigKey.ModalLayerColor: value.c = new Color(0f, 0f, 0f, 0.4f); break; case ConfigKey.RenderingTextBrighterOnDesktop: value.b = true; break; case ConfigKey.TouchDragSensitivity: value.i = 10; break; case ConfigKey.TouchScrollSensitivity: value.i = 20; break; case ConfigKey.InputCaretSize: value.i = 1; break; case ConfigKey.InputHighlightColor: value.c = new Color32(255, 223, 141, 128); break; case ConfigKey.DepthSupportForPaintingMode: value.b = false; break; case ConfigKey.Branch: value.s = ""; break; } } public static void ClearResourceRefs() { UIConfig.defaultFont = ""; UIConfig.buttonSound = null; UIConfig.globalModalWaiting = null; UIConfig.horizontalScrollBar = null; UIConfig.loaderErrorSign = null; UIConfig.popupMenu = null; UIConfig.popupMenu_seperator = null; UIConfig.tooltipsWin = null; UIConfig.verticalScrollBar = null; UIConfig.windowModalWaiting = null; UIPackage.branch = null; } public void ApplyModifiedProperties() { EMRenderSupport.Reload(); } public delegate NAudioClip SoundLoader(string url); /// /// /// public static SoundLoader soundLoader = null; } }