- Плавное открытие панели при нажатии кнопки
- Плавное закрытие панели при нажатии кнопки
На сцене редактора Unity в табе Hierarchy добавляем экранный UI\Canvas (с настройкой компонента Canvas\Render Mode=Screen Space — Overlay)
при добавлении Canvas автоматически добавляется игровой объект EventSystem по управлению нажатием
(не рекомендуется удалять)
Добавляем UI\Panel и дочерним в панель добавляем UI\Button (у дочернего элемента UI\Text кнопки настроим текст, допустим «Menu»)
![](https://codegid.ru/wp-content/uploads/2021/02/image-8.png)
![](https://codegid.ru/wp-content/uploads/2021/02/image.png)
Открыть таб Animation у Panel и создать анимацию и контроллер.
![](https://codegid.ru/wp-content/uploads/2021/02/image-1.png)
Открываем инспектор анимации через сохранённый файл
![](https://codegid.ru/wp-content/uploads/2021/02/image-2.png)
Открываем инспектор файла контроллера
(создаётся при сохранении файла анимации там же)
Открываем таб Animation через кнопку open в инспекторе.
В разделе Parameters создаём параметр типа bool под именем open, который отвечает за состояние панели (открыт или закрыт)
![](https://codegid.ru/wp-content/uploads/2021/02/image-3.png)
(в каждом переходе отключаем Has Exit Time=false и добавляем в Contions параметр Open) и настраиваем узлы Open и Close (Speed, Motion — привязываем файл анимации)
![](https://codegid.ru/wp-content/uploads/2021/02/image-6.png)
![](https://codegid.ru/wp-content/uploads/2021/02/image-7.png)
Создаём файл Mono скрипт C# и привязываем к GameObject (у которого анимация) В данном случае Panel.
//Bo52_15022021153631149.LIB.MONO_15022021153631149. namespace Bo52_15022021153631149.LIB { using UnityEngine; using UnityEditor; public class MONO_15022021153631149:Bo52.SYSTEM.Mono { public void OpenPanel() { Animator anim = gameObject.GetComponent(); bool isOpen = anim.GetBool("open"); anim.SetBool("open", !isOpen); } } } MonoBehaviour код для игрового объекта на сцене с анимацией
Привязываем к событию OnClick кнопки
(в данном случае «Menu») метод из привязанного моно скрипта к игровому объекту (Panel) OpenPanel()
![](https://codegid.ru/wp-content/uploads/2021/02/image-4.png)