Как отключить GameObject после завершения анимации - PullRequest
0 голосов
/ 25 марта 2020

Итак, у меня есть анимация, которая исчезает на экране меню, но после ее завершения ни одна из моих кнопок не работает. Я понял, что это потому, что GameObject, который содержит черное изображение, которое постепенно исчезает, всегда находится спереди, что не позволяет мне использовать любую из кнопок. Я попытался написать скрипт, который прикреплен к игровому объекту, который отключает GameObject после завершения анимации, но он не работает.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LevelChanger : MonoBehaviour
{
    public Animation anim;

    public void SetTrigger()
    {
        this.StartCoroutine(this.PerformAnimRoutine());
    }

    private IEnumerator PerformAnimRoutine()
    {
        var state = anim.PlayQueued("Fade_In", QueueMode.PlayNow, PlayMode.StopSameLayer);

        yield return new WaitForSeconds(state.length);

        this.gameObject.SetActive(false);
    }
}

Что-то не так с кодом или есть более простой способ сделать это? Я чрезвычайно новичок в единстве, поэтому я очень застрял.

1 Ответ

2 голосов
/ 25 марта 2020

Если все, что вы делаете, - это затухание спрайта для очистки, и вы, кажется, знаете о сопрограммах, я мог бы начать с того, что вместо этого предлагаю вам сделать затухание внутри сопрограммы. когда 0 отключите объект.
Это просто, если это звучит более плавно, нет ничего плохого в способе анимации.

Хотя делать это с анимацией:

Я не уверен что вы можете отключить объект, в котором включена анимация. Если это доступно на листе допинга, попробуйте это. В противном случае мы можем использовать поведение состояний или события анимации.

События анимации

Они могут использоваться для запуска функции в определенной точке анимации. Вы можете создавать их, похожие на ключевые кадры. Вот ссылка на Руководство Unity по этой теме c.

Все, что вам нужно сделать, это создать событие и поместить его в конец анимации. Затем вам нужно в скрипте этого объекта создать функцию publi c, которая просто отключает объект. Вызовите это вместе с событием.

Поведение состояний

Поведение конечного автомата позволяют определить сценарий для запуска в заданном состоянии анимации. Он имеет много функций для подключения, таких как OnStateEnter и OnStateExit.

. Вы можете нажать на состояние, которое исчезает в аниматоре. В инспекторе вы сможете нажать «Добавить поведение». Это создаст скрипт, который вы можете открывать и редактировать. Здесь является ссылкой для этого класса.
Оттуда должно быть очень просто отключить объект через OnStateExit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...