using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using UnityEngine.UI; [CreateAssetMenu(menuName = "Config/EnableButtonConfig")] public class EnableButtonConfig : ScriptableObject { [SerializeField] EnableButtonType type; [SerializeField] EnableButtonStyle enableButton; [SerializeField] EnableButtonStyle unEnableButton; public static Dictionary dict = new Dictionary(); public static void SetEnable(Button _btn, Text _text, bool _enable, EnableButtonType _type) { var _cfg = GetEnableButtonCfg(_type); var _btnStyle = _enable ? _cfg.enableButton : _cfg.unEnableButton; _btn.interactable = _enable; var _colors = _btn.colors; _colors.disabledColor = Color.white; _btn.colors = _colors; _btn.image.SetSprite(_btnStyle.iconKey); _text.fontSize = _btnStyle.fontSize; _text.color = _btnStyle.fontColor; } public static EnableButtonConfig GetEnableButtonCfg(EnableButtonType _type) { if (dict.ContainsKey(_type)) { return dict[_type]; } var _cfg= BuiltInLoader.LoadScriptableObject(StringUtility.Contact("EnableButton_", _type)); dict.Add(_type, _cfg); return _cfg; } [Serializable] public struct EnableButtonStyle { public string iconKey; public Color fontColor; public int fontSize; } public enum EnableButtonType { Default, } }