2017-11-09 6 views
3

私は練習用の簡単なゲームを作っています。私は2プレーヤーのように2キューブを持っています。私は乱数を生成します。これはキューブの名前です。私は配列にこの数字を格納し、私はこれに問題がありません。しかし、私は私のゲームのマルチプレイヤーを作ったとき、私は2番目のプレーヤーに参加するときに私はいくつかの問題cuzを取得します。私はゲームが最初のプレーヤーの番号を再生成すると思う...これはあなたが写真で見ることができます! これはgenereteを使って番号に名前を追加するスクリプトです。そしてこのスクリプトはプレイヤーのプレハブに添付されています。 enter image description hereUnityマルチプレイヤー数が一致しない

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

クライアントの詳細情報(例:番号、位置、色など)をクライアントに渡す方法が必要です – BugFinder

+0

そして、どの方法を使用すればよいですか?それとも、私はzの例を与えることができますか? – antal1208

+0

あなたはそれに参加している他のクライアントのクライアントにどのコードを通知しなければなりませんか? – BugFinder

答えて

0

両方のクライアントがRandom.Rangeコードが二回実行し、個別にランダムな番号を取得することを意味している個別他のスクリプトを実行します、あなたはランダムに生成するために、両方のクライアントを防止するための方法を考える必要があります値。

単なるインデックスの場合は、一貫しているプレイヤー数+1以上を使用することをお勧めします。

EDIT:@BugFinderがコメントに書いたように、ランダムに生成された番号をサーバーに送信し、サーバーにプレーヤーの名前をクライアントに配布させます。

+0

私はplayers [100]配列を持っています。プレイヤーがStart()で数字を生成するときに接続します。生成された65のように、プレーヤー[65] = 1;他のすべて= 0あなたが知っている....そしてこの番号は彼の名前....他のプレイヤーにとって最も簡単な方法ではない彼の名前を正しく参照してください? :( – antal1208

0

両方のプレイヤーがそれぞれ独自のゲームのインスタンスを実行します。だからあなたは同じ名前を持つことができます。あなたは部屋/ロビーに参加するときに、各プレイヤーに名前を放送する必要があります。または、サーバーがそれを処理するようにしてください。例えば

  • ユーザーAは
  • Serverは固有の名前が数100
  • は ''
  • ユーザBが部屋に参加するユーザーに名前として100を送ると言う作成部屋に参加し
  • Serverは、1つの
  • 新しい名前で番号をインクリメント101
  • センドですユーザー名「B」に「101」を入力