Как управлять сопряженными устройствами компонента ввода игрока - PullRequest
0 голосов
/ 05 мая 2020

Привет, я пытаюсь настроить многопользовательскую систему с Unity new Input System .

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

Объект manager , как и ожидалось, содержит менеджер ввода игрока компонент, но также: вход игрока компонент ( Для обнаружения входов, когда нет созданных игроков; они обычно используются объектами игрока ) и скриптом для управления присоединением и уходом игроков и получения входных данных.

Объект player prefab содержит физический объект для управления, вход игрока компонент и 2 скрипт : 1 для обработки входящих входов и 1 для управления физическим объектом.

Присоединение игроков работает. Я просто использую:

PlayerInputManager.JoinPlayer(Int32, Int32, String, InputDevice) ( Это задокументировано здесь )

Но иногда я также хочу удалить или изменить, какие устройства установлены игроку или менеджеру, но я не могу найти то, что мне нужно сделать.

Я пытался найти функцию, которая делает это для класса PlayerInput , но не смог найти что-нибудь.

Я также пытался манипулировать UserInput struct (, который в основном является идентификатором игрока ) внутри компонента Player Input моего объекта, но в отличие от Player Input Manager я не мог получить доступ к документированным свойствам. ( Для этого я посмотрел здесь )

Итак, вот мой вопрос: как мне получить доступ к PlayerInputs идентификатору пользователя и настроить его сопряженные устройства?

Также, если я ошибся или вы чего-то не поняли, дайте мне знать.

1 Ответ

0 голосов
/ 06 мая 2020

Я нашел решение.

Чтобы изменить свойства компонента Player Input , мне действительно нужны их UserInput struct.

Но фокус был что мне также нужен был правильный класс PlayerInput . ( Которые внутри Ввод игрока компоненты )

Чтобы получить его, мне нужно было набрать:

var myPlayerInput = PlayerInput.all[i]; ( i = index )

Чем его получить UserInput Я набираю:

var myUser = myPlayerInput.user;

Теперь я могу изменить любое свойство указанного PlayerInput class.

Например, я могу использовать это для удаления контроллеров Player:

myUser.UnpairDevice(InputDevice);

( InputDevice Должна быть ссылка на устройство )

Ну вот и проблема решена.

Надеюсь, это может помочь и кому-то другому.

Изменить: получить UserInput в одном go вы можете ввести курс:

var myUser = PlayerInput.all[i].user;

...