识别ID玩家点击统一

问题描述 投票:0回答:1

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

function unity3d events onclick identify
1个回答
0
投票

也许可以为每个玩家生成一个唯一的ID,(我只知道qb64,它在c++中有一些根基).当他们点击上述按钮时,它会将这个数字发送给你.也许在名字旁边显示数字?(ei XxbanananxX:655731)


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
}

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.