寻找其他网络玩家团结unet

时间:2017-11-02 05:09:42

标签: c# unity3d multiplayer unity3d-unet

我在获取其他网络播放器时遇到问题 我想这样存储。

void Start ()
{
    GameObject[] players = GameObject.FindGameObjectsWithTag ("Player");
    for (int i = 0; i < players.Length; i++) {
        if (players [i].GetComponent <NetworkIdentity> ().isLocalPlayer) {
            minePlayer = players [i];
        }
        if (!players [i].GetComponent <NetworkIdentity> ().isLocalPlayer) {
            oppenentPlayer = players [i];
        }
    }
}

在服务器中我只找到我的玩家而在其他玩家中我发现两者但不正确 预谢谢你的帮助

1 个答案:

答案 0 :(得分:2)

你的问题的标题和你的代码假设Unity游戏中只有两个玩家。游戏中最多可以有10名玩家,你也应该处理它们。您需要找到来自PlayerController的玩家,并且可以使用NetworkManager.client.connection.playerControllers检索这些玩家。您还必须检查IsValid以确保PlayerController附加了播放器。

以下是如何找到网络上的所有玩家:

NetworkManager networkManager = NetworkManager.singleton;

List<PlayerController> pc = networkManager.client.connection.playerControllers;

for (int i = 0; i < pc.Count; i++)
{

    if (pc[i].IsValid)
        Debug.Log(pc[i].gameObject.name);
}