2016-11-18 16 views
0

私はマルチプレイヤーゲームを作ろうとしています。私のプログラムでは、私が作ったspawnSpotsというコードがあります。それは存在しないと言っていますが、明らかにそうです。私のスポーンスポットで何が問題になっていますか?

ここでは、コードです:

void Start() 
{ 
    spawnSpots = GameObject.FindObjectOfType<SpawnSpot>(); 
} 

次にあります:

if(spawnSpots == null) 
{ 
    Debug.LogError("No Spawns Placed."); 
    return; 
} 

SpawnSpot mySpawnSpot = spawnSpots[Random.Range (0, spawnSpots.length)]; 

だから、毎回ワードspawSpotsが書き込まれ、エラーが言っている:

重大度コード説明プロジェクトファイル回線抑制状態 エラーCS0103 'spawnSpots'という名前が現在のコンテキストに存在しません。Mul tiplayer-FPS.CSharp C:¥Users¥desha¥Documents¥Multiplayer-FPS¥Assets¥NetworkManager.cs 15アクティブ

この問題を修正するにはどうすればよいですか?

+1

もっとコードを表示できますか?あなたのスクリプトの中では 'spawnSpots'がpropretyとして宣言されていますか?エラーは、 'spawnSpots'が現在のコンテキストに存在しない、つまり宣言されていないことを示唆しているようです。 – Lincoln

答えて

0

GameObject.FindObjectOfTypeを間違って使用しています。配列を設定してランダムなものを選択するように見えます。配列を検索し、配列に追加する方法。タイプの

検索対象:https://docs.unity3d.com/ScriptReference/Object.FindObjectOfType.html

+0

それは私の質問に答えません。私は、プレーヤーがランダムなスポーンスポットに着陸するようにしようとしているだけです。 –

+2

これはあなたの質問に答えてくれます。あなたが正しい方法で最初からやることをするなら、何をしようとしているのかを簡単に診断することができます。 Unity wikiのネットワーキングヘルプを参照することをお勧めします。 –

2

[OK]を使用すると、ネットワーク上のマルチプレイヤーゲームを設定している場合、あなたはシーンでお使いのスポーンポイントのそれぞれにNetworkStartPositionコンポーネントを持っている必要があります。

enter image description here

また、NetworkManagerを使用すると、また、いくつかのスポーン設定があり、あなたのシーンで必要となることは注目に値します。 「ラウンドロビン」を選択すると、各NetworkStartPositionのプレーヤーがランダムに生成されます。

これが役に立ちます。ここで

enter image description here

ネットワークマルチプレイの基本をカバーする優れたビデオへのリンクです。私が見つけたのはこれまでのところ最も有用なことです。 UnityNetworkTutorial

+0

どこでもネットワークマネージャを見つけることができません –

+0

インポートする必要がある単一資産パッケージがあります。これは新しいバージョンの標準になります。しかし、あなたがそれを持っていない場合は、アセットストアから無料ロビーマネージャーをダウンロードできます。https://www.assetstore.unity3d.com/en/#!/content/41836 –

+0

空を作成するだけですか?それともスポーンポイントに入れるのだろうか? –

関連する問題