mirror of
https://github.com/ConjureETS/Unity_Utils.git
synced 2026-03-24 04:50:58 +00:00
69 lines
1.6 KiB
C#
69 lines
1.6 KiB
C#
using System;
|
|
using JetBrains.Annotations;
|
|
using Sirenix.OdinInspector;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
#if ODIN_INSPECTOR
|
|
#endif
|
|
|
|
namespace JohnsonUtils.Canvases
|
|
{
|
|
public class ButtonUIComponent : UISelectableComponentBase
|
|
{
|
|
public event Action OnClick;
|
|
|
|
#if ODIN_INSPECTOR
|
|
[Required]
|
|
#endif
|
|
[Header("Association"), SerializeField]
|
|
private Button button;
|
|
|
|
[Header("Configuration"), SerializeField, UsedImplicitly]
|
|
private ButtonNavigationType buttonNavigationType;
|
|
|
|
private enum ButtonNavigationType
|
|
{
|
|
[UsedImplicitly] Forward,
|
|
[UsedImplicitly] Backward
|
|
}
|
|
|
|
public Color Color
|
|
{
|
|
set => button.image.color = value;
|
|
}
|
|
|
|
[PublicAPI]
|
|
public bool Enabled
|
|
{
|
|
set => button.interactable = value;
|
|
}
|
|
|
|
[PublicAPI]
|
|
public void Select() => button.Select();
|
|
|
|
protected override void SetSelectableGameObject() => Selectable = button;
|
|
|
|
private void Start()
|
|
{
|
|
Debug.Assert(button, $"A {nameof(button)} must be assigned to a {nameof(ButtonUIComponent)}");
|
|
button.onClick.AddListener(OnButtonClicked);
|
|
}
|
|
|
|
protected override void OnDestroy()
|
|
{
|
|
button.onClick.RemoveListener(OnButtonClicked);
|
|
base.OnDestroy();
|
|
}
|
|
|
|
private void OnButtonClicked()
|
|
{
|
|
OnClick?.Invoke();
|
|
}
|
|
|
|
private void OnValidate()
|
|
{
|
|
if (!button)
|
|
button = GetComponent<Button>();
|
|
}
|
|
}
|
|
} |