Добрый день,
В настоящее время я делаю локальную многопользовательскую (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), чтобы управлять им могло только одно устройство? Заранее спасибо!