vkvk
@vkvk

Как правильно настроить анимацию закрытия и открытия TMP_Dropdown?

Всем привет. Хочу сделать анимацию при открытии и закрытии dropdown, но с обычными состояниями normal, pressed и так далее сделать не выходит (анимация не проигрывается в нужный момент и работает совсем коряво). Сначала добавил для самого dropdown компонент EventTrigger и при клике на него воспроизводил анимацию, но если закрывать dropdown без изменений, кликая на пустое пространство вокруг него или не изменяя его значения (выбирать тот пункт, который уже был выбран), то анимация не воспроизводится. В итоге реализовал это так:
public class DropdownAnimations : MonoBehaviour
{
    [Header("Dropdown animation properties")]
    private bool isOpen = false;
    private bool isChanged;
    private Animator anim;
    [SerializeField] private TMPro.TMP_Dropdown dropdown;

    void Start()
    {
        anim = GetComponent<Animator>();
    }

    public void PlayAnimation()
    {
        if (dropdown.interactable)
        {
            if (!isOpen)
            {
                anim.SetTrigger("Openning");
                isOpen = true;
                var blocker = GameObject.Find("Blocker");
                blocker.GetComponent<Button>().onClick.AddListener(delegate { PlayAnimation(); });
                isChanged = false;
            }
            else
            {
                isChanged = true;
                anim.SetTrigger("Closing");
                isOpen = false;
                var blocker = GameObject.Find("Blocker");
                blocker.GetComponent<Button>().onClick.AddListener(delegate { PlayAnimation(); });
            }
        }
    }

    public void SelectCurrentItem()
    {
        if (!isOpen && !isChanged)
        {
            anim.SetTrigger("Openning");
            isOpen = true;
        }
        else if (isOpen && !isChanged) 
        {
            anim.SetTrigger("Closing");
            isOpen = false;
        }
    }
}


Но уверен, что есть какое-то более подходящее решение для этой проблемы. Как это можно реализовать более правильно? (SelectCurrentItem установил для объектов dropdown'а и повесил на них EventTrigger)
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы