UI анимирование панели (РЕШЕНО)

Графический интерфейс пользователя

UI анимирование панели (РЕШЕНО)

Сообщение pesiik 23 сен 2015, 16:38

Есть панелька на канвасе, к которой прикреплены несколько кнопок. Создал анимацию вращения ее по оси Y на - 90. По нажатию кнопки (которая, кстати, на этой же панельке) панелька должна прокрутиться полностью и выключиться, после чего включается другая. Просто нужен скрипт на включение это анимации, написанный мной не подходит. Выдает ошибку: MissingComponentException: There is no 'Animation' attached to the "Main Buttons" game object, but a script is trying to access it. You probably need to add a Animation to the game object "Main Buttons". Or your script needs to check if the component is attached before using it.
Может кто-то анимировал панельки. Как такового класса panel в UnityEngine.UI нет.
Изображение
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class ChangeDivisionButton : MonoBehaviour {

    public GameObject Main;
    public GameObject Division;
    public AnimationClip Rot;
           
            public void SwitchDivision () {
            Main.GetComponent<Animation>().Play(Rot.name);
                                                           }
}
 
Последний раз редактировалось pesiik 25 сен 2015, 15:29, всего редактировалось 1 раз.
pesiik
UNITрон
 
Сообщения: 223
Зарегистрирован: 01 авг 2015, 11:46

Re: UI анимирование панели

Сообщение samana 23 сен 2015, 20:21

А у вас точно на объекте Main Buttons есть компонент Animation?
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: UI анимирование панели

Сообщение pesiik 24 сен 2015, 09:49

samana писал(а):А у вас точно на объекте Main Buttons есть компонент Animation?

Изображение
pesiik
UNITрон
 
Сообщения: 223
Зарегистрирован: 01 авг 2015, 11:46

Re: UI анимирование панели

Сообщение samana 24 сен 2015, 09:55

У вас нет компонента Animation, у вас Animator.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: UI анимирование панели

Сообщение pesiik 24 сен 2015, 10:01

samana писал(а):У вас нет компонента Animation, у вас Animator.

ваще невнимательность это плохо, спасибо) однако, не работает
pesiik
UNITрон
 
Сообщения: 223
Зарегистрирован: 01 авг 2015, 11:46

Re: UI анимирование панели

Сообщение samana 24 сен 2015, 10:27

Добавьте вашу анимацию Rot в массив Animations (компонента Animation).
Уберите public AnimationClip Rot; в вашем классе.
Включайте анимацию с помощью
Синтаксис:
Используется csharp
Main.GetComponent<Animation>().Play("Rot");


p.s. скорее всего придётся перевести анимационный клип в режим legacy. Как это сделать поищите по форуму, совсем недавно были посты на эту тему.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: UI анимирование панели

Сообщение pesiik 24 сен 2015, 11:04

samana писал(а):Добавьте вашу анимацию Rot в массив Animations (компонента Animation).
Уберите public AnimationClip Rot; в вашем классе.
Включайте анимацию с помощью
Синтаксис:
Используется csharp
Main.GetComponent<Animation>().Play("Rot");


p.s. скорее всего придётся перевести анимационный клип в режим legacy. Как это сделать поищите по форуму, совсем недавно были посты на эту тему.

вы имели ввиду "компонента Animator"?
pesiik
UNITрон
 
Сообщения: 223
Зарегистрирован: 01 авг 2015, 11:46

Re: UI анимирование панели

Сообщение samana 24 сен 2015, 11:11

Нет, я имел ввиду анимационный клип.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: UI анимирование панели

Сообщение pesiik 24 сен 2015, 11:26

samana писал(а):Нет, я имел ввиду анимационный клип.

простите за нубство, но откудо взять анимационный клип? я создаю Animator, а анимационный клип это вот? Изображение
и тогда в Play("Rot"); записывается прям строковое название клипа? т.е. "Rotate main button"?
pesiik
UNITрон
 
Сообщения: 223
Зарегистрирован: 01 авг 2015, 11:46

Re: UI анимирование панели

Сообщение samana 24 сен 2015, 11:52

Да, вы правильно поняли. Но есть нюанс: для управления анимацией, вы можете использовать как Animator так и Animation. Судя по вашему коду, я так понял, что вы хотите использовать Animation. И тогда, вам нужно в компоненте Animation, добавить ваш "клип анимации (тот что у вас на скриншоте: Rotate main button"), в список (массив) анимаций, сюда -
ИзображениеИзображение
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: UI анимирование панели

Сообщение pesiik 24 сен 2015, 12:17

samana писал(а):Да, вы правильно поняли. Но есть нюанс: для управления анимацией, вы можете использовать как Animator так и Animation. Судя по вашему коду, я так понял, что вы хотите использовать Animation. И тогда, вам нужно в компоненте Animation, добавить ваш "клип анимации (тот что у вас на скриншоте: Rotate main button"), в список (массив) анимаций, сюда -
ИзображениеИзображение

а как через аниматор если?
pesiik
UNITрон
 
Сообщения: 223
Зарегистрирован: 01 авг 2015, 11:46

Re: UI анимирование панели

Сообщение samana 24 сен 2015, 12:27

pesiik писал(а):а как через аниматор если?

Доступ к анимаТОРУ осуществляется примерно так:
Синтаксис:
Используется csharp
public class SomeScript : MonoBehaviour
{
    private Animator anim;

    // Use this for initialization
    void Start()
    {
        anim = GetComponent<Animator>();
    }

    public void SwitchDivision()
    {
        anim.Play("Rotate main button");
    }
}


p.s. управление анимацией хоть и не очень сложная штука, но вам лучше посмотреть уроки на эту тему, так как там есть много нюансов.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: UI анимирование панели

Сообщение pesiik 24 сен 2015, 12:37

samana писал(а):
pesiik писал(а):а как через аниматор если?

Доступ к анимаТОРУ осуществляется примерно так:
Синтаксис:
Используется csharp
public class SomeScript : MonoBehaviour
{
    private Animator anim;

    // Use this for initialization
    void Start()
    {
        anim = GetComponent<Animator>();
    }

    public void SwitchDivision()
    {
        anim.Play("Rotate main button");
    }
}


p.s. управление анимацией хоть и не очень сложная штука, но вам лучше посмотреть уроки на эту тему, так как там есть много нюансов.

сделал все через on click в инспекторе кнопки. Изображение возник новый вопрос. как в конце анимации выключить эту панельку с кнопками и включить другую? есть какая нить конструкция типа waitforanimation?
pesiik
UNITрон
 
Сообщения: 223
Зарегистрирован: 01 авг 2015, 11:46

Re: UI анимирование панели

Сообщение samana 24 сен 2015, 12:45

Та таймлайне (где вы делали анимацию), можно добавлять метки-события. То-есть когда анимация дойдёт до определённое кадра - сработает событие-метод, который вы сами выберите.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: UI анимирование панели

Сообщение pesiik 24 сен 2015, 12:51

samana писал(а):Та таймлайне (где вы делали анимацию), можно добавлять метки-события. То-есть когда анимация дойдёт до определённое кадра - сработает событие-метод, который вы сами выберите.

оо спасибо) а как это сделать? создаешь new state и добавляешь скрипт к нему?
pesiik
UNITрон
 
Сообщения: 223
Зарегистрирован: 01 авг 2015, 11:46

След.

Вернуться в uGUI

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4