2017-01-12 10 views
0

私はネットワーク経由でシーンを切り替えようとしています。各プレーヤーがローカルでシーンを非同期にロードして、全員が読み込み画面を取得できるようにしたいと思います。私はコマンドとRPCコールに苦労しています。シーンが変更された後、私は新しいプレーヤーをrespawnし、それをクライアントに関連づけたいと思います。Respawn Player on Scene Change

public void changeLevel(string name) 
{ 
    CmdChangeLevel(name); 
    //nm.ServerChangeScene(name); -> This doesnt change the scene Async 
} 

void changeScene(string name) 
{ 
    SceneManager.LoadScene(name); 

    //Stuff to re-Instantiate the player 
} 

[Command] 
void CmdChangeLevel(string name) 
{ 
    SceneManager.LoadScene(name); 
    RpcChangeLevel(name); 
} 

[ClientRpc] 
void RpcChangeLevel(string name) 
{ 
    changeScene(name); 
} 

シーンスイッチが生じたが、何のプレイヤーがインスタンス化されませ、(NM = NetworkManagerの)nm.OnServerAddPlayer(のような私が試したすべてのもの)と、サーバを介して、それを起動し、それをインスタンス化します。助けていただければ幸いです。ありがとうございます。

答えて

0

おそらく必要なのは、DontDestroyOnLoad(DDOL)の静的ゲームマネージャですか? は、基本的にはあなたが何である:

1)GameManagerスクリプトを使用して、空のゲームオブジェクトを作成したシーンを作成し、あなたのゲームのビルドオーダー(それまでに最初の負荷をゲーム)

2)で最初にそれを置きます。 Start()でDontDestroyOnLoadメソッドを実行します。スクリプトで

3)、あなたの「最初」のシーンをロード(メインメニューまたはスプラッシュ画面または何でも)

これは、あなたがそう、でも、シーンチェンジの間滞在するあなたのDDOLスクリプトを入れてオブジェクトを作成しますあなたはそのゲームオブジェクトのローディング画面とプレイヤーのスポーンなどを扱うことができます。

+0

基本的に私が知りたいのは、ネットワークマネージャのプレイヤープレハブを手動で生成する方法です。シーンをローカルにロードして、あなたの知っているプレーヤーを再起動するようサーバーに依頼するクライアントが必要ですか? – Ay0m3

関連する問題