我为练习做了一个简单的游戏。我有2个立方体像2个玩家。我生成一个随机数,这是多维数据集的名称。我把这个数字存储在一个数组中,我没有遇到这个问题。但是当我制作我的游戏多人游戏时,我得到了一些问题,因为当我加入第二个游戏时,我认为游戏会重新生成第一个玩家的号码...这可以在图片上看到! 这是生成并添加号码的脚本。并且此脚本附加到播放器预制件上。
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 () {
}
}
答案 0 :(得分:0)
两个客户端将相互单独运行脚本,这意味着Random.Range代码将运行两次并获得单独的随机数,您需要考虑一种方法来防止两个客户端生成随机值。
如果它只是一个索引,我建议使用+ 1或类似的玩家数量,这将是一致的。
编辑:或者@BugFinder在评论中写道,将随机生成的号码发送到服务器,让服务器将播放器的名称分发给客户。
答案 1 :(得分:0)
两个玩家都运行自己的游戏实例。所以你可能会有相同的名字。当你加入一个房间/大厅时,你必须向每个玩家广播这些名字。或让服务器处理它。
例如