Спрайт не установлен, Аниматор глючит - PullRequest
0 голосов
/ 02 мая 2019

Я создаю Меню выбора персонажа для моей мобильной игры.У меня есть GlobalManager Gamobject, который является сингелтоном, сохраняющимся сквозь сцены.Затем у меня есть GameSession Gameobject, который управляет содержимым внутри игровой сцены.

В MenuScene внутри окна выбора персонажа, когда я щелкаю по переключателю персонажа, я вызываю функцию, которая устанавливает sprite и runtimeAnimatorController в поле GlobalManager.Затем, когда я загружаю игровой процесс в меню «Пуск», я вызываю функцию ниже, чтобы установить спрайт и аниматор игрока.

Проблема в том, что аниматор установлен, а спрайт - нет.Также, когда я начинаю перемещать игрока, похоже, что Аниматор вызывает все анимации сразу в течение 3-4 секунд, пока не стабилизируется и не начнет воспроизводить правильную.

#region Set Character
    public void SetCharacter(GameObject player)
    {
        if (CharacterSprite && CharacterRuntimeAnimatorController && player)
        {
            player.GetComponent<SpriteRenderer>().sprite = CharacterSprite;

            if (player.GetComponent<PlayerBehavior>() && player.GetComponent<Animator>())
            {
                player.GetComponent<Animator>().runtimeAnimatorController = CharacterRuntimeAnimatorController;
            }
        }
    }
    #endregion

Ожидаемое поведение - спрайт будетустановлено, и аниматор не будет глючить

РЕДАКТИРОВАТЬ: Когда я деактивировать Animator в Player GameObject, спрайт установлен.Все еще не уверен, что является причиной этой проблемы

РЕДАКТИРОВАТЬ 2: Следующий скрипт позволяет установить спрайт, но глюк анимации остается

public void SetCharacter(GameObject player)
    {
        if (CharacterSprite && CharacterRuntimeAnimatorController && player)
        {
            player.GetComponent<SpriteRenderer>().sprite = CharacterSprite;

            if (player.GetComponent<PlayerBehavior>() && !player.GetComponent<Animator>())
            {
                player.AddComponent(typeof(Animator));
            }

            if (player.GetComponent<PlayerBehavior>() && player.GetComponent<Animator>())
            {
                player.GetComponent<Animator>().runtimeAnimatorController = CharacterRuntimeAnimatorController;
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...