【问题标题】:Finding other network player unity unet寻找其他网络播放器 unity unet
【发布时间】:2018-04-14 13:06:22
【问题描述】:

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

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];
        }
    }
}

在服务器中我只找到我的播放器,而在其他播放器中我都找到了但不正确 提前感谢您的帮助

【问题讨论】:

  • @sudoman281 请帮我解决这个问题

标签: c# unity3d multiplayer unity3d-unet


【解决方案1】:

您的问题标题和代码假设 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);
}

【讨论】:

  • 游戏中只有2个玩家,不能超过2个,感谢帮助
  • 玩家数量无关紧要。它应该仍然有效。取出前两个 IsValid 对象,然后将 break 移出循环。
猜你喜欢
  • 1970-01-01
  • 2016-09-13
  • 2016-10-25
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
相关资源
最近更新 更多