Рубрики
Unity Animation Controller Panel unity-UI

Анимация UI панели на сцене

  • Плавное открытие панели при нажатии кнопки
  • Плавное закрытие панели при нажатии кнопки

На сцене редактора Unity в табе Hierarchy добавляем экранный UI\Canvas (с настройкой компонента Canvas\Render Mode=Screen Space — Overlay)

при добавлении Canvas автоматически добавляется игровой объект EventSystem по управлению нажатием
(не рекомендуется удалять)


Добавляем UI\Panel и дочерним в панель добавляем UI\Button (у дочернего элемента UI\Text кнопки настроим текст, допустим «Menu»)

Прилипить игровую объект на сцене (в данном случае панель) слева Экрана
Панель скрыть от экрана влево (переместив с помощью визуального инструмента Move Tool) и оставить видимым экраном кнопку

Открыть таб Animation у Panel и создать анимацию и контроллер.

Создание анимации (сохраняем файл .anim) и контроллера для GameObject (на примере Panel)

Открываем инспектор анимации через сохранённый файл

Отключаем повторение анимации Loop Time

Открываем инспектор файла контроллера
(создаётся при сохранении файла анимации там же)
Открываем таб Animation через кнопку open в инспекторе.
В разделе Parameters создаём параметр типа bool под именем open, который отвечает за состояние панели (открыт или закрыт)

Создаём три узла empty,Open,Close с настройкой связи
(в каждом переходе отключаем Has Exit Time=false и добавляем в Contions параметр Open) и настраиваем узлы Open и Close (Speed, Motion — привязываем файл анимации)
Настроить состояние перехода empty->Open
Настроить состояние перехода Open->Close


Создаём файл 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()

привязывание на событие кнопки OnClick метод, который изменяет параметр Open в анимации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *