Я создаю Меню выбора персонажа для моей мобильной игры.У меня есть 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;
}
}
}