using UnityEngine; namespace PrefsGUI { /// /// Define Outer Interface /// public abstract class PrefsParamOuter : PrefsParam { [SerializeField] protected TOuter defaultValue; public TOuter DefaultValue => defaultValue; protected PrefsParamOuter(string key, TOuter defaultValue = default) : base(key) { this.defaultValue = defaultValue; } public static implicit operator TOuter(PrefsParamOuter me) { return me.Get(); } #region abstract public abstract TOuter Get(); /// true if the value is changed public abstract bool Set(TOuter v); #endregion #region override public override void ResetToDefault() => Set(DefaultValue); #endregion } }