NetworkViewを使って通信対戦 その3
今回は下の2つの手順の内、?を進めてみる。
?動かすオブジェクトの設定(プレイヤー)の設定
?ネットワークを管理するスクリプトの設定
これが完了すると、とりあえず初期実行画面はできる。
hostを押すと、ホストになる。connectを押すと、ホストに接続する。
とりあえずソースと解説をば。
以下ソース
(ブログにコピペで張り付けるとインデントが無くてわかりにくかったから、全角スペースを所々に配置。
全コピだと使えなくなるかもしれない)
...
public GameObject prefub;
public string ip = "127.0.0.1";
private string port = "4211";
private bool connected = false;
private void CreatePlayer()
{
connected = true;
Network.Instantiate(prefub, transform.position, transform.rotation, 1);
}
public void OnDisconnectedFromServer(){ connected = false; }
public void OnPlayerDisconnected(NetworkPlayer pl){ Network.DestroyPlayerObjects(pl);}
public void OnConnectedToServer(){ CreatePlayer();}
public void OnServerInitialized(){ CreatePlayer(); }
public void OnGUI()
{
if( !connected)
{
ip = gui.TextField( new Rect(10,10,90,20),ip);
port = gui.TextField( new Rect(10, 40, 90, 20), port);
if( gui.Button( new Rect( 10,70,90, 20), "Connect")){ Network.Connect(ip, int.Parse(port) ); }
if( gui.Button( new Rect(10, 100, 90, 20), "host")){ Network.InitializeServer(10, int.Parse(port), false); }
}
}
MacのMonoDevelopに日本語が入力できないので、コメントはなし。
いや本当になんでだろう・・
誰か何とかする方法知らないかな
解説。
このソースは、クライアントとサーバの両方に対応したスクリプトで、
簡単に言えば、以下の処理を行う。
A.サーバーを立てたらサーバー上にPrefubのコピー(自分が操作するプレイヤー)を配置
B.サーバーに接続したらサーバー上にPrefubのコピー(自分が操作するプレイヤー)を配置
C.接続するかサーバーとなるかを設定するGUIの提供
つまり、
サーバーの場合、
1.Network.InitializeServerでサーバーをネットワーク上に立てる。
2.OnServerInitialized()が実行され、サーバー上にプレハブを配置する。
クライアントの場合、
1.Network.Connectでサーバーに接続する。
2.OnConnectedToServer()が実行され、サーバー上にプレハブを配置する。
こんな感じ。
後は切断時の動作とか云々。何となく分かるはず。
OnGUIで行ってる処理は・・・そのうち。
これでシンプルなネットワークが出来た。
次はパラメータの同期についてかな