こんにちは
オンラインゲームを作ろうと思いルーム作成のスクリプトを、
C#
1using UnityEngine; 2using System.Collections; 3using System.Net; 4public class Connector : MonoBehaviour { 5 6 // 自分のIPアドレス 7 private string myIP = ""; 8 // 接続先のIPアドレス 9 private string servIP = ""; 10 // 接続が完了したときtrue 11 private bool isConnected = false; 12 public GameObject prefPlayer = null; 13 14 // Use this for initialization 15 void Start() 16 { 17 string hostname = Dns.GetHostName(); 18 19 // ホスト名からIPアドレスを取得 20 IPAddress[] adrList = Dns.GetHostAddresses(hostname); 21 foreach (IPAddress address in adrList) 22 { 23 myIP = address.ToString(); 24 servIP = myIP; 25 } 26 } 27 28 // Update is called once per frame 29 void Update() 30 { 31 32 } 33 34 void OnGUI() 35 { 36 // 未接続のとき、接続用UIを表示 37 if (!isConnected) 38 { 39 40 // ゲームサーバーになるボタン 41 if (GUI.Button(new Rect(10, 10, 200, 30), "ゲームサーバーになる")) 42 { 43 if (Network.InitializeServer(20, 25000, false) == NetworkConnectionError.NoError) 44 { 45 procConnect(); 46 } 47 else 48 { 49 Debug.Log("ゲームサーバー初期化エラー"); 50 } 51 52 } 53 54 // IPの編集 55 servIP = GUI.TextField(new Rect(10, 50, 200, 30), servIP); 56 57 // クライアントになるボタン 58 if (GUI.Button(new Rect(10, 80, 200, 30), "上のゲームサーバーに接続")) 59 { 60 if (Network.Connect(servIP, 25000) == NetworkConnectionError.NoError) 61 { 62 procConnect(); 63 } 64 else 65 { 66 Debug.Log("接続エラー"); 67 } 68 69 } 70 } 71 } 72 private void procConnect() 73 { 74 isConnected = true; 75 76 // プレイヤーを出現させる 77 StartCoroutine("instantiatePlayer"); 78 } 79 80 private IEnumerator instantiatePlayer() 81 { 82 // 接続が完了するまで待つ 83 while (!Network.isServer && !Network.isClient) 84 { 85 yield return null; 86 } 87 88 // 接続したので出場 89 Vector3 pos = new Vector3(Random.Range(-5f, 5f), Random.Range(-2.5f, 2.5f)); 90 Network.Instantiate(prefPlayer, pos, Quaternion.identity, 0); 91 } 92 93 94}
このようにかいたところ、先に「上のゲームサーバーに接続」を押すとUGUIが消えて
誰かが「ゲームサーバーになる」ボタンを押さない限り動かせなくなります。
先に「上のゲームサーバーに接続」を押してもUGUIが消えないようにするにはどうすればいいですか?(「ゲームサーバーになる」ボタンが押された後ならUGUIが消えるようにしたいです)
あと、ルームに2人以上入った状態で1人がゲームをやめてもプレイヤーのプレファブが消えず誰かのプレイヤーと一緒に動いてしまいます。
通信が切れたらプレファブを消すにはどうすればいいですか?
もしこのスクリプトを変えるより簡単な方法があったら教えてください。
回答よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/12 08:44 編集