Unity多人游戏玩家数量不匹配

时间:2017-11-09 14:35:19

标签: c# unity3d networking multiplayer

我为练习做了一个简单的游戏。我有2个立方体像2个玩家。我生成一个随机数,这是多维数据集的名称。我把这个数字存储在一个数组中,我没有遇到这个问题。但是当我制作我的游戏多人游戏时,我得到了一些问题,因为当我加入第二个游戏时,我认为游戏会重新生成第一个玩家的号码...这可以在图片上看到! 这是生成并添加号码的脚本。并且此脚本附加到播放器预制件上。 enter image description here

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;


public class PlayerThings : NetworkBehaviour {

    public int player_name;
    public GameObject Number;

    void Start () {

        player_name = Random.Range (10, 99);
        this.name = player_name.ToString ();
        GameManager.numbers [player_name] = 1;
        Number.GetComponent<TextMesh> ().text = name;

    }

    // Update is called once per frame
    void Update () {

    }
}

2 个答案:

答案 0 :(得分:0)

两个客户端将相互单独运行脚本,这意味着Random.Range代码将运行两次并获得单独的随机数,您需要考虑一种方法来防止两个客户端生成随机值。

如果它只是一个索引,我建议使用+ 1或类似的玩家数量,这将是一致的。

编辑:或者@BugFinder在评论中写道,将随机生成的号码发送到服务器,让服务器将播放器的名称分发给客户。

答案 1 :(得分:0)

两个玩家都运行自己的游戏实例。所以你可能会有相同的名字。当你加入一个房间/大厅时,你必须向每个玩家广播这些名字。或让服务器处理它。

例如

  • 用户A加入会议室
  • 服务器创建一个唯一的名称,例如数字100
  • 将100作为名称发送给用户'A'
  • 用户B加入会议室
  • 服务器将数字增加1
  • 新名称是101
  • 将101作为名称发送给用户'B'