определить id игроков onclick unity - PullRequest
0 голосов
/ 27 мая 2020

(Unity) Я использую новую систему ввода и MultiplayerEventSystem с 4 активными игроками. До сих пор у каждого игрока был свой собственный Root (контейнер) объектов для выбора, но я наткнулся на сцену, в которой у 4 игроков будут одинаковые кнопки пользовательского интерфейса, доступные для выбора, а затем возникла проблема, о которой я не знаю. решить: как определить, какой игрок нажал кнопку (onclick)? Я не знаю, какую переменную включить в метод кнопки OnClick, чтобы вернуть какое-то значение, которое позволяет мне связываться с игроком, выполнившим действие. Нужна помощь.

Ответы [ 3 ]

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

Когда создается экземпляр каждого игрока, он должен иметь идентификатор, в противном случае присвойте ему его.

Когда игрок взаимодействует с кнопкой, передайте его идентификатор в метод onClick.

например как псевдокод:

private void OnClick(int playerID)
{
    //Do your button stuff, knowing playerID 
    if(playerID == 1)
        //Do something
    else
        //Do something else
}
0 голосов
/ 27 мая 2020

Используйте ссылки на объекты для игроков и передайте их в событии OnClick. Таким образом, вы можете предотвратить некоторую абстракцию, введенную управлением индексами, и вам, возможно, не придется управлять списком игроков отдельно. Еще одно преимущество заключается в том, что IntelliSense может быть более полезным для управления таким кодом.

В зависимости от вашего случая это может быть GameObject или ссылка на скрипт на игровой объект игрока в сцене (например, PlayerMonobehaviour.cs, прикрепленный к GameObject) , или какой-нибудь объект C#, относящийся к игрокам-людям.

// Object reference can be something like:
// Player player, GameObject player, PlayerMonobehaviour player, ...
private void OnClick(Player player)
{
    // Control player directly,...
    player.DoSomething();

    // ...or publish an event with player as the event argument.
    // and let other scripts do what they want with the player.
    Clicked?.Invoke(player);
}
0 голосов
/ 27 мая 2020

может быть сгенерирован идентификатор для каждого игрока, уникальный для них (я знаю только qb64, который имеет корни в C ++). и когда они нажимают указанную кнопку, он отправляет вам этот номер. может, рядом с именем отобразить цифру? (ei XxbanananxX: 655731)

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