识别ID玩家onclick团结

时间:2020-05-27 10:32:23

标签: function unity3d events onclick identify

(团结)我正在使用具有4个活跃玩家的新输入系统和MultiplayerEventSystem。到目前为止,每个玩家都有自己的对象根(容器)可供选择,但是我遇到了一个场景,其中四个玩家将具有相同的UI按钮可供选择,然后出现了一个我不知道解决的问题:如何确定哪个玩家按下了按钮(点击)?我不知道要在按钮的OnClick方法中包含哪种类型的变量以返回一些值,该值使我可以链接到执行该操作的玩家。需要帮助。

3 个答案:

答案 0 :(得分:0)

可能会为每个唯一的播放器生成一个ID(我只知道qb64,它在c ++中有一些根)。当他们单击所说的按钮时,它将把该号码发送给您。也许在名字旁边显示数字? (ei XxbanananxX:655731)

答案 1 :(得分:0)

每个玩家实例化时都应该有一个ID,如果没有,请为其分配一个ID。

播放器与按钮互动时,请在onClick方法上传递其ID。

例如作为伪代码:

private void OnClick(int playerID)
{
    //Do your button stuff, knowing playerID 
    if(playerID == 1)
        //Do something
    else
        //Do something else
}

答案 2 :(得分:0)

使用对玩家的对象引用并将其传递到OnClick事件中。这样,您可以防止管理索引引入的某些抽象,并且您可能不需要单独管理播放器列表。另一个优势是,IntelliSense可以更有效地管理此类代码。

根据您的情况,这可以是GameObject或对场景中玩家游戏对象的脚本引用(例如,附加到GameObject上的PlayerMonobehaviour.cs),也可以是某些引用人类玩家的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);
}