Unity Replace gameObject подключен к входу игрока - PullRequest
0 голосов
/ 02 мая 2020

Добрый день,

В настоящее время я делаю локальную многопользовательскую (2D) игру в Unity и использую новую систему ввода. Для управления несколькими игроками у меня есть объект InputManager (это просто имя объекта, не имеет значения) с компонентом PlayerInputManager. Настройки компонента выглядят следующим образом:

  • Поведение уведомлений = Отправка сообщений
  • Поведение присоединения = Присоединение к игрокам при нажатии кнопки
  • Установлен префаб игрока
  • Присоединение включено по умолчанию = true
  • Количество игроков ограничено 4
  • Разделение экрана не включено

Работает добавление новых игроков и префабов хорошо, но для выбора символов необходимо переключать символы, не используя пользовательский интерфейс. Итак, на экране есть персонаж, к которому прикреплен скрипт CharSelect. Этот скрипт проверяет, нажаты ли входы для переключения символов. Код перехода к следующему символу выглядит следующим образом:

//switch to next character
private void OnR()
{
    if (charNr < gm.characters.Length) 

        gm.replaceObjects(gameObject, gm.characters[charNr + 1]);
    }
}

gm - это еще один скрипт в объекте GameManager, который также содержит метод для переключения персонажа. Он также содержит массив символов, который содержит префабы всех символов. charNr - номер текущего персонажа в массиве 'characters'.

Метод переключения персонажей выглядит следующим образом:

public void replaceObjects(GameObject target, GameObject prefab)
{
    Instantiate(prefab, target.transform.position, Quaternion.identity);
    Destroy(target);
}

Проблема в том, что экземпляр gameObject не подключен игроку больше. Теперь любое устройство ввода может управлять этим gameObject / персонаж.

Другое дело, что всякий раз, когда я вызываю персонажа, я проверяю в Awake (), если этот персонаж уже находится в игре, поэтому 2 игрока не могут выбрать тот же персонаж Я также использую метод replaceObjects () для этого, и он работает правильно; старый персонаж удаляется, а новый все еще подключен к плееру.

Как я могу подключить этот объект к игроку (PlayerInput), чтобы управлять им могло только одно устройство? Заранее спасибо!

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