/** * ルーム一覧情報. */ private void OnGUI_RoomInfo() { // 表題 GUILayout.Label("RoomInfo", new GUIStyle() { normal = new GUIStyleState() { textColor = Color.white }, fontStyle = FontStyle.Bold }); GUILayout.BeginHorizontal(); GUILayout.Space(25); // ロビー通知されているルーム一覧情報の取得 RoomData[] roomList = MonobitNetwork.GetRoomData(); foreach (RoomData room in roomList) { string roomInfo = "RoomName : " + room.name + " CustomParam "; foreach (string key in room.customParameters.Keys) { roomInfo += "Key : " + key + " "; roomInfo += "Value : " + room.customParameters[key].ToString() + " "; } GUILayout.Label(roomInfo); } GUILayout.EndHorizontal(); }
private void Update() { //--------- ここはチャットのために入室処理をしているが、実際は別のUIで一回だけ処理する必要がある //--------- じゃないと、部屋ができるまでの間に結構なエラーを吐く if (!MonobitNetwork.isConnect) { MonobitNetwork.autoJoinLobby = true; MonobitNetwork.ConnectServer("ChatServer"); } if (!MonobitNetwork.inRoom) { //サーバ上の部屋を全取得 RoomData[] _roomDatas = MonobitNetwork.GetRoomData(); //部屋が1つでもあるなら if (_roomDatas.Length >= 1) { //1つ目の部屋に入る MonobitNetwork.JoinRoom(_roomDatas[0].name); } else { Debug.Log("部屋作る"); //「ChatTest」という名前で部屋を作る MonobitNetwork.CreateRoom("ChatTest"); } } if (MonobitNetwork.inRoom && Input.GetKeyDown(KeyCode.J)) { Debug.Log("送るよ"); SEND(new ChatUSER("sonoda"), "こんにちは"); } }
// Update is called once per frame void Update() { if (!MonobitNetwork.isConnect) { MonobitNetwork.autoJoinLobby = true; MonobitNetwork.ConnectServer("testServer"); } if (!MonobitNetwork.inRoom) { //サーバ上の部屋を全取得 RoomData[] _roomDatas = MonobitNetwork.GetRoomData(); //部屋が1つでもあるなら if (_roomDatas.Length >= 1) { //1つ目の部屋に入る MonobitNetwork.JoinRoom(_roomDatas[0].name); } else { Debug.Log("部屋作る"); //「ChatTest」という名前で部屋を作る MonobitNetwork.CreateRoom("ChatTest"); } } if (MonobitNetwork.inRoom && Input.GetKeyDown(KeyCode.J)) { Debug.Log("送るよ"); _monobitView.RPC("Receive", MonobitTargets.All, this.gameObject.GetComponent <MeshRenderer>() as Object); } }
// GUIまわりの記述 public void OnGUI() { // GUI用の解像度を調整する Vector2 guiScreenSize = new Vector2(800, 480); if (Screen.width > Screen.height) { // landscape GUIUtility.ScaleAroundPivot(new Vector2(Screen.width / guiScreenSize.x, Screen.height / guiScreenSize.y), Vector2.zero); } else { // portrait GUIUtility.ScaleAroundPivot(new Vector2(Screen.width / guiScreenSize.y, Screen.height / guiScreenSize.x), Vector2.zero); } if (MonobitNetwork.isConnect) { // ルーム一覧を取得 m_RoomData = MonobitNetwork.GetRoomData(); // ルーム一覧からボタン選択 if (m_RoomData != null) { for (int i = 0; i < m_RoomData.Length; i++) { if (GUILayout.Button(m_RoomData[i].name + "(" + m_RoomData[i].playerCount + ")", GUILayout.Width(100))) { MonobitNetwork.JoinRoom(m_RoomData[i].name); } } } // ルーム名の入力 this.roomName = GUILayout.TextField(this.roomName); // ルームの作成 if (GUILayout.Button("Create Room", GUILayout.Width(100))) { MonobitNetwork.CreateRoom(this.roomName, new RoomSettings() { isVisible = true, isOpen = true, maxPlayers = this.maxPlayers }, null); } // ルームへの入室(ランダム) if (GUILayout.Button("Join Room", GUILayout.Width(100))) { MonobitNetwork.JoinRandomRoom(); } // メニューに戻る if (GUILayout.Button("Return Menu", GUILayout.Width(100))) { Application.LoadLevel("SampleMenu"); } } }
public void ReloadRoomList() { foreach (GameObject entry in roomListView) { GameObject.Destroy(entry); } var roomList = MonobitNetwork.GetRoomData(); foreach (var roomData in roomList) { var go = Instantiate(roomListEntryPrefab, roomListView); go.GetComponent <RoomListEntry>().Initialize(roomData); } }
public static string[] getRoomNames() { List <string> rooms = new List <string>(); foreach (RoomData room in MonobitNetwork.GetRoomData()) { //1人以下のみ if (room.playerCount <= 1) { rooms.Add(room.name); Debug.Log("ルーム【" + room.name + "】を取得"); } } return(rooms.ToArray()); }
/// <summary> /// roomが存在していればそこに入る。ない場合は新しく作る /// </summary> /// <param name="room"></param> protected virtual void EnterRoom(RoomData room) { RoomData[] Rooms = MonobitNetwork.GetRoomData(); if (!MonobitNetwork.inLobby) { MonobitNetwork.JoinLobby(); if (Contain(Rooms, room)) { MonobitNetwork.JoinRoom(room.name); } else { MonobitNetwork.CreateRoom(room.name); } } }
/// <summary> /// 入室機能 /// </summary> public void EnterRoom() { if (!MonobitNetwork.inLobby) { return; } //プレイヤー名を入力 _playerName = _nameField.text; //プレイヤー名が入力されていれば部屋への入室するボタン if (!string.IsNullOrEmpty(_playerName)) { if (!MonobitNetwork.inRoom) { //サーバ上の部屋を全取得 RoomData[] _roomDatas = MonobitNetwork.GetRoomData(); //部屋が1つでもあるなら if (_roomDatas.Length >= 1) { //1つ目の部屋に入る MonobitNetwork.JoinRoom(_roomDatas[0].name); //名前入力欄隠す _nameObject.SetActive(false); _enterObject.SetActive(false); _leaveObject.SetActive(true); } else { Debug.Log("部屋作る"); //「SimpleGame」という名前で部屋を作る MonobitNetwork.CreateRoom("SimpleGame"); //名前入力欄隠す _nameObject.SetActive(false); _enterObject.SetActive(false); _leaveObject.SetActive(true); } MonobitNetwork.player.name = _playerName; } } }
void JoinRoom(string roomName) { Debug.Log(roomName); //roomNameという部屋へ移動 //あるなら移動ないなら作る if (!MonobitNetwork.inRoom) { //サーバ上の部屋を全取得 RoomData[] roomDatas = MonobitNetwork.GetRoomData(); //部屋が1つでもあるなら if (roomDatas.Length > 0) { bool IsRoom = false; //部屋があるか確認 foreach (RoomData r in roomDatas) { if (r.name == roomName) { IsRoom = true; break; } } if (IsRoom) { MonobitNetwork.JoinRoom(roomName); } else { MonobitNetwork.CreateRoom(roomName); } } else { //roomNameで部屋を作る MonobitNetwork.CreateRoom(roomName); Debug.Log("create"); } SceneLoader.Load("Meeting_Scene"); } }
/// <summary> /// 接続待ち処理 /// </summary> /// <param name="roomname"></param> /// <returns></returns> private IEnumerator WaitConnectedCoroutine(string playerName, string roomname) { yield return(null); if (MonobitNetwork.isConnecting) { yield return(new WaitForSecondsRealtime(3.0f)); Debug.Log(string.Join(" / ", MonobitNetwork.GetRoomData().Select(x => x.name))); if (!MonobitNetwork.inRoom) { Debug.Log("VC_Connected!"); if (MonobitNetwork.GetRoomData().ToList().FirstOrDefault(room => room.name == roomname) == null) { Debug.Log("VC_CreateRoom: " + roomname); MonobitNetwork.CreateRoom(roomname); } else { Debug.Log("VC_JoinRoom: " + roomname); MonobitNetwork.JoinRoom(roomname); } yield return(new WaitForSecondsRealtime(1.0f)); Debug.Log(string.Join(" / ", MonobitNetwork.GetRoomData().Select(x => x.name))); StartCoroutine(WaitLoginCoroutine(playerName, roomname)); } } else { MonobitNetwork.DisconnectServer(); MonobitNetwork.playerName = playerName; MonobitNetwork.autoJoinLobby = true; MonobitNetwork.ConnectServer("SimpleVoiceChat_v1.0"); Debug.Log("VC_WaitConnected..."); yield return(new WaitForSecondsRealtime(1.0f)); StartCoroutine(WaitConnectedCoroutine(playerName, roomname)); } }
private void OnClickJoin() { RoomData[] roomData = MonobitNetwork.GetRoomData(); int length = roomData.Length; for (int i = 0; i < length; ++i) { if (!roomData[i].name.Equals(m_RoomName)) { continue; } if (!roomData[i].customParameters["password"].Equals(m_Password)) { Debug.Log("Incorrect Password"); return; } MonobitNetwork.JoinRoom(m_RoomName); break; } }
public void EnterandmoveRoom() { //プレイヤー名を入力 _playerName = _nameField.text; //プレイヤー名が入力されていれば部屋への入室するボタン if (!string.IsNullOrEmpty(_playerName)) { if (!MonobitNetwork.inRoom) { //サーバ上の部屋を全取得 RoomData[] _roomDatas = MonobitNetwork.GetRoomData(); //部屋が1つでもあるなら if (_roomDatas.Length >= 1) { //1つ目の部屋に入る MonobitNetwork.JoinRoom(_roomDatas[0].name); //名前入力欄隠す _nameObject.SetActive(false); _enterObject.SetActive(false); SceneManager.LoadScene("BirthdayScene"); } else { //「SimpleGame」という名前で部屋を作る MonobitNetwork.CreateRoom("SimpleGame"); //名前入力欄隠す _nameObject.SetActive(false); _enterObject.SetActive(false); SceneManager.LoadScene("BirthdayScene"); } MonobitNetwork.player.name = _playerName; } } }
private void UpdateRoomData() { var scrollViewContent = m_scrollViewObj.transform.Find("Viewport/Content"); int roomCount = MonobitNetwork.GetRoomData().Length; for (int i = 0; i < roomCount; i++) { RoomData roomData = MonobitNetwork.GetRoomData()[i]; if (!roomData.customParameters["password"].Equals("empty")) { continue; } GameObject button = (GameObject)Instantiate(m_ButtonPrefab); button.transform.SetParent(scrollViewContent, false); button.GetComponent <RectTransform>().anchoredPosition = new Vector3(0, i * -30 + 120, 0); button.GetComponent <ScrollViewButton>().Set(MonobitNetwork.GetRoomData()[i]); m_ButtonList.Add(button); } }
private IEnumerator WaitConnectedCoroutine(string roomname) { yield return(null); if (MonobitNetwork.isConnecting) { yield return(new WaitForSecondsRealtime(3.0f)); Debug.Log(string.Join(" / ", MonobitNetwork.GetRoomData().Select(x => x.name))); if (!MonobitNetwork.inRoom) { Debug.Log("VC_Connected!"); if (MonobitNetwork.GetRoomData().ToList().FirstOrDefault(room => room.name == roomname) == null) { Debug.Log("VC_CreateRoom: " + roomname); MonobitNetwork.CreateRoom(roomname); } else { Debug.Log("VC_JoinRoom: " + roomname); MonobitNetwork.JoinRoom(roomname); } yield return(new WaitForSecondsRealtime(1.0f)); Debug.Log(string.Join(" / ", MonobitNetwork.GetRoomData().Select(x => x.name))); StartCoroutine(WaitLoginCoroutine()); } } else { Debug.Log("VC_WaitConnected..."); yield return(new WaitForSecondsRealtime(1.0f)); StartCoroutine(WaitConnectedCoroutine(roomname)); } }
private void OnGUI() { // デフォルトのボタンと被らないように、段下げを行なう。 GUILayout.Space(24); // MUNサーバに接続している場合 if (MonobitNetwork.isConnect) { // ボタン入力でサーバから切断&シーンリセット if (GUILayout.Button("Disconnect", GUILayout.Width(150))) { // サーバから切断する MonobitNetwork.DisconnectServer(); // シーンをリロードする #if UNITY_5_3_OR_NEWER || UNITY_5_3 string sceneName = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name; UnityEngine.SceneManagement.SceneManager.LoadScene(sceneName); #else Application.LoadLevel(Application.loadedLevelName); #endif } // ルームに入室している場合 if (MonobitNetwork.inRoom) { // ボタン入力でルームから退室 if (GUILayout.Button("Leave Room", GUILayout.Width(150))) { MonobitNetwork.LeaveRoom(); } } // ルームに入室していない場合 if (!MonobitNetwork.inRoom) { GUILayout.BeginHorizontal(); // ルーム名の入力 GUILayout.Label("RoomName : "); roomName = GUILayout.TextField(roomName, GUILayout.Width(200)); // ボタン入力でルーム作成 if (GUILayout.Button("Create Room", GUILayout.Width(150))) { MonobitNetwork.CreateRoom(roomName); } GUILayout.EndHorizontal(); // 現在存在するルームからランダムに入室する if (GUILayout.Button("Join Random Room", GUILayout.Width(200))) { MonobitNetwork.JoinRandomRoom(); } // ルーム一覧から選択式で入室する foreach (RoomData room in MonobitNetwork.GetRoomData()) { string strRoomInfo = string.Format("{0}({1}/{2})", room.name, room.playerCount, (room.maxPlayers == 0) ? "-" : room.maxPlayers.ToString()); if (GUILayout.Button("Enter Room : " + strRoomInfo)) { MonobitNetwork.JoinRoom(room.name); } } } } }
/** * GUI制御. */ void OnGUI() { // GUI用の解像度を調整する Vector2 guiScreenSize = new Vector2(800, 480); if (Screen.width > Screen.height) { // landscape GUIUtility.ScaleAroundPivot(new Vector2(Screen.width / guiScreenSize.x, Screen.height / guiScreenSize.y), Vector2.zero); } else { // portrait GUIUtility.ScaleAroundPivot(new Vector2(Screen.width / guiScreenSize.y, Screen.height / guiScreenSize.x), Vector2.zero); } // MUNサーバに接続している場合 if (MonobitNetwork.isConnect) { // ルームに入室している場合 if (MonobitNetwork.inRoom) { // ルーム内のプレイヤー一覧の表示 GUILayout.BeginHorizontal(); GUILayout.Label("PlayerList : "); foreach (MonobitPlayer player in MonobitNetwork.playerList) { GUILayout.Label(player.name + " "); } GUILayout.EndHorizontal(); // ルームからの退室 if (GUILayout.Button("Leave Room", GUILayout.Width(150))) { MonobitNetwork.LeaveRoom(); } if (myVoice != null) { // 送信タイプの設定 GUILayout.BeginHorizontal(); GUILayout.Label("VoiceChat Send Type : "); Int32 streamType = myVoice.SendStreamType == StreamType.BROADCAST ? 0 : 1; myVoice.SendStreamType = (StreamType)GUILayout.Toolbar(streamType, new string[] { "broadcast", "multicast" }); GUILayout.EndHorizontal(); // マルチキャスト送信の場合の、ボイスチャットの送信可否設定 if (myVoice.SendStreamType == StreamType.MULTICAST) { List <MonobitPlayer> playerList = new List <MonobitPlayer>(vcPlayerInfo.Keys); List <MonobitPlayer> vcTargets = new List <MonobitPlayer>(); foreach (MonobitPlayer player in playerList) { // GUI による送信可否の切替 GUILayout.BeginHorizontal(); GUILayout.Label("PlayerName : " + player.name + " "); GUILayout.Label("Send Permission: "); vcPlayerInfo[player] = GUILayout.Toolbar(vcPlayerInfo[player], new string[] { "Allow", "Deny" }); GUILayout.EndHorizontal(); // ボイスチャットの送信可のプレイヤー情報を登録する if (vcPlayerInfo[player] == (Int32)EnableVC.ENABLE) { vcTargets.Add(player); } } // ボイスチャットの送信可否設定を反映させる myVoice.SetMulticastTarget(vcTargets.ToArray()); } } } // ルームに入室していない場合 else { // ルーム名の入力 GUILayout.BeginHorizontal(); GUILayout.Label("RoomName : "); roomName = GUILayout.TextField(roomName, GUILayout.Width(200)); GUILayout.EndHorizontal(); // ルームを作成して入室する if (GUILayout.Button("Create Room", GUILayout.Width(150))) { MonobitNetwork.CreateRoom(roomName); } // ルーム一覧を検索 foreach (RoomData room in MonobitNetwork.GetRoomData()) { // ルームを選択して入室する if (GUILayout.Button("Enter Room : " + room.name + "(" + room.playerCount + "/" + ((room.maxPlayers == 0) ? "-" : room.maxPlayers.ToString()) + ")")) { MonobitNetwork.JoinRoom(room.name); } } } } // MUNサーバに接続していない場合 else { // プレイヤー名の入力 GUILayout.BeginHorizontal(); GUILayout.Label("PlayerName : "); MonobitNetwork.playerName = GUILayout.TextField((MonobitNetwork.playerName == null) ? "" : MonobitNetwork.playerName, GUILayout.Width(200)); GUILayout.EndHorizontal(); // デフォルトロビーへの自動入室を許可する MonobitNetwork.autoJoinLobby = true; // MUNサーバに接続する if (GUILayout.Button("Connect Server", GUILayout.Width(150))) { MonobitNetwork.ConnectServer("SimpleVoiceChat_v1.0"); } } }
/** * @brief オンライン&ロビー入室中のGUI表示. * @param isDispInputGUI 入力系GUIを表示するかどうかのフラグ(縁取り文字描画機能を活かした場合の、多重描画を防止するため). * @param state 文字表示色. */ private void OnGUI_InLobby(bool isDispInputGUI, GUIStyleState state) { // ルーム作成GUIレイヤー { // Header GUILayout.Label("Create Room/Join Random", new GUIStyle() { normal = state, fontSize = 18 }); GUILayout.BeginHorizontal(); GUILayout.Space(25); GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); { // ルーム名の入力欄、および作成ボタン入力表示 GUILayout.Label("Input room name:", new GUIStyle() { normal = state, fontSize = 16, margin = new RectOffset(6, 6, 6, 6), fixedWidth = 140 }); if (isDispInputGUI) { this.roomName = GUILayout.TextField(this.roomName, GUILayout.Width(200)); if (GUILayout.Button("Create Room", GUILayout.Width(150))) { // 入力があった場合、指定された名前で4人部屋を生成 MonobitNetwork.CreateRoom(roomName, new RoomSettings() { isVisible = true, isOpen = true, maxPlayers = 4 }, null); } } else { GUILayout.Space(25); } } GUILayout.EndHorizontal(); // ルームの作成ボタン入力表示 if (isDispInputGUI) { if (GUILayout.Button("Join Random", GUILayout.Width(150))) { // ランダム入室をする MonobitNetwork.JoinRandomRoom(); } } else { GUILayout.Space(25); } // Footer GUILayout.EndVertical(); GUILayout.EndHorizontal(); } // ルームリストGUIレイヤー { // ルーム一覧の取得 RoomData[] roomList = MonobitNetwork.GetRoomData(); // ルーム一覧が存在する場合、ルームリストを表示 if (roomList != null) { // Header GUILayout.Label("Created Room List", new GUIStyle() { normal = state, fontSize = 24 }); GUILayout.BeginHorizontal(); GUILayout.Space(25); GUILayout.BeginVertical(); // ルームリストについて、1件ずつボタン入力表示 foreach (RoomData room in roomList) { if (isDispInputGUI && room.open && room.visible) { if (GUILayout.Button(room.name + " (" + room.playerCount + "/" + room.maxPlayers + ")", GUILayout.Width(300))) { MonobitNetwork.JoinRoom(room.name); } } } // Footer GUILayout.EndVertical(); GUILayout.EndHorizontal(); } } }
private void OnGUI() { //MUNサーバに接続している場合 if (MonobitNetwork.isConnect) { //Debug.Log("サーバに接続しました"); // ルームに入室している場合 if (MonobitNetwork.inRoom) { /* * * //Debug.Log("ルームに入室しました"); * // ルーム内のプレイヤー一覧の表示 * GUILayout.BeginHorizontal(); * GUILayout.Label("PlayerList : "); * //Debug.Log("PlayerList:"); * foreach (MonobitPlayer player in MonobitNetwork.playerList) * { * GUILayout.Label(player.name + " "); * //Debug.Log(player.name + " "); * } * GUILayout.EndHorizontal(); * * // ルームからの退室 * if (GUILayout.Button("Leave Room", GUILayout.Width(150))) * { * MonobitNetwork.LeaveRoom(); * //Debug.Log("ルームから退出しました"); * chatLog.Clear(); * } * * // チャット発言文の入力 * GUILayout.BeginHorizontal(); * GUILayout.Label("Message : "); * chatWord = GUILayout.TextField(chatWord, GUILayout.Width(400)); * GUILayout.EndHorizontal(); * * // チャット発言文を送信する * if (GUILayout.Button("Send", GUILayout.Width(100))) * { * monobitView.RPC("RecvChat", * MonobitTargets.All, * MonobitNetwork.playerName, * chatWord); * chatWord = ""; * } * * // チャットログを表示する * string msg = ""; * for (int i = 0; i < 10; ++i) * { * msg += ((i < chatLog.Count) ? chatLog[i] : "") + "\r\n"; * } * GUILayout.TextArea(msg); */ } // ルームに入室していない場合 else { // ルーム名の入力 GUILayout.BeginHorizontal(); GUILayout.Label("RoomName : "); roomName = GUILayout.TextField(roomName, GUILayout.Width(200)); GUILayout.EndHorizontal(); // ルームを作成して入室する if (GUILayout.Button("Create Room", GUILayout.Width(150))) { MonobitNetwork.CreateRoom(roomName); Debug.Log("ルームを作成しました"); /******** * ここでメインのシーンに遷移する *********/ SceneManager.LoadScene("newUI"); } // ルーム一覧を検索 foreach (RoomData room in MonobitNetwork.GetRoomData()) { // ルームパラメータの可視化 System.String roomParam = System.String.Format( "{0}({1}/{2})", room.name, room.playerCount, ((room.maxPlayers == 0) ? "-" : room.maxPlayers.ToString()) ); // ルームを選択して入室する if (GUILayout.Button("Enter Room : " + roomParam)) { MonobitNetwork.JoinRoom(room.name); /******** * ここでメインのシーンに遷移する *********/ SceneManager.LoadScene("newUI"); } } } } //していない場合 else { // プレイヤー名の入力 GUILayout.BeginHorizontal(); GUILayout.Label("PlayerName : "); MonobitNetwork.playerName = GUILayout.TextField( (MonobitNetwork.playerName == null) ? "" : MonobitNetwork.playerName, GUILayout.Width(200)); GUILayout.EndHorizontal(); // デフォルトロビーへの自動入室を許可する MonobitNetwork.autoJoinLobby = true; // MUNサーバに接続する if (GUILayout.Button("Connect Server", GUILayout.Width(150))) { MonobitNetwork.ConnectServer("SimpleChat_v1.0"); Debug.Log("サーバに接続しました"); } } }
private void OnGUI() { //MUNサーバに接続している場合 if (MonobitNetwork.isConnect) { //Debug.Log("サーバに接続しました"); // ルームに入室している場合 if (MonobitNetwork.inRoom) { } // ルームに入室していない場合 else { int x = Screen.width; int y = Screen.height; // ルーム名の入力 //UIの位置を中心に GUILayout.Space(y / 3.2f); GUILayout.BeginHorizontal(); { GUILayout.Space(x / 4.5f); GUI.skin.label.fontSize = x / 30; GUILayout.Label("部屋名・パスワードは4文字まで", GUILayout.Height(x / 20), GUILayout.Width(x / 2)); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); { GUILayout.Space(x / 4); GUI.skin.label.fontSize = x / 50; GUILayout.Label("部屋名: ", GUILayout.Width(x / 8)); GUI.skin.textField.fontSize = x / 50; GUI.skin.button.fontSize = x / 50; roomName = GUILayout.TextField(roomName, GUILayout.Height(x / 40), GUILayout.Width(x / 3)); } GUILayout.EndHorizontal(); //パスワード欄 GUILayout.BeginHorizontal(); { GUILayout.Space(x / 5); GUILayout.Label("パスワード作成: ", GUILayout.Height(x / 40), GUILayout.Width(x * 7 / 40)); roomPasword = GUILayout.TextField(roomPasword, GUILayout.Height(x / 40), GUILayout.Width(x / 3)); } GUILayout.EndHorizontal(); // ルームを作成して入室する GUILayout.BeginHorizontal(); GUILayout.Space(x * 3 / 8); if (GUILayout.Button("部屋を作成", GUILayout.Height(x / 35), GUILayout.Width(x / 3))) { int a = roomName.Length; int b = roomPasword.Length; MonobitNetwork.CreateRoom(roomName + roomPasword + a + b); Debug.Log("ルームを作成しました"); /******** * ここでメインのシーンに遷移する *********/ SceneManager.LoadScene("newUI"); } GUILayout.EndHorizontal(); // ルーム一覧を検索 foreach (RoomData room in MonobitNetwork.GetRoomData()) { // ルームパラメータの可視化 System.String roomParam = System.String.Format( "{0}({1}/{2})", room.name, room.playerCount, ((room.maxPlayers == 0) ? "-" : room.maxPlayers.ToString()) ); string rn = room.name; string s1 = rn.Substring(rn.Length - 1); string s2 = rn.Substring(rn.Length - 2, 1); int i1 = int.Parse(s1); int i2 = int.Parse(s2); string s3 = rn.Substring(0, i2); string s4 = rn.Substring(i2, i1); //ルームパスワードと結びつけ GUILayout.BeginHorizontal(); { GUILayout.Space(x / 8); GUILayout.Label(s3 + "のパスワード解除: ", GUILayout.Height(x / 40), GUILayout.Width(x / 4)); roomUnrock = GUILayout.TextField(roomUnrock, GUILayout.Height(x / 40), GUILayout.Width(x / 3)); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Space(x * 3 / 8); // ルームを選択して入室する if (GUILayout.Button("部屋に入室 : " + s3, GUILayout.Height(x / 35), GUILayout.Width(x / 3))) { if (roomUnrock == s4) { MonobitNetwork.JoinRoom(room.name); /******** * ここでメインのシーンに遷移する *********/ SceneManager.LoadScene("newUI"); } else { Debug.Log("パスワードが違います"); } } GUILayout.EndHorizontal(); } } } //していない場合 else { int x = Screen.width; int y = Screen.height; // プレイヤー名の入力 GUILayout.Space(y / 2.3f); GUILayout.BeginHorizontal(); { GUILayout.Space(x / 4); GUILayout.Label("名前入力 : ", GUILayout.Width(x / 8)); GUI.skin.label.fontSize = x / 50; GUI.skin.textField.fontSize = x / 50; GUI.skin.button.fontSize = x / 50; MonobitNetwork.playerName = GUILayout.TextField( (MonobitNetwork.playerName == null) ? "" : MonobitNetwork.playerName, GUILayout.Height(x / 40), GUILayout.Width(x / 3)); } GUILayout.EndHorizontal(); // デフォルトロビーへの自動入室を許可する MonobitNetwork.autoJoinLobby = true; // MUNサーバに接続する GUILayout.BeginHorizontal(); GUILayout.Space(x * 3 / 8); if (GUILayout.Button("サーバに接続", GUILayout.Height(x / 35), GUILayout.Width(x / 3))) { MonobitNetwork.ConnectServer("SimpleChat_v1.0"); Debug.Log("サーバに接続しました"); } GUILayout.EndHorizontal(); } }
/** * ルーム内でのGUI操作. */ private void OnGUI_InRoom() { // 自身のプレイヤーIDの表示 GUILayout.Label("Your ID : " + MonobitNetwork.player.ID); // ルーム内に存在するプレイヤー数の表示 GUILayout.Label("PlayerCount : " + MonobitNetwork.room.playerCount + " / " + ((MonobitNetwork.room.maxPlayers == 0) ? "-" : MonobitNetwork.room.maxPlayers.ToString())); // ルームの入室制限可否設定の表示 GUILayout.Label("Room isOpen : " + MonobitNetwork.room.open); // ルーム作成者が入力した値 GUILayout.Label("Room Owner Numeric Value : " + MonobitNetwork.room.customParameters["Value"]); // 自身が入力した値 GUILayout.Label("My Skill Level : " + baseValue); // 制限時間の表示 if (isGameStart) { GUILayout.Label("Rest Frame : " + this.battleEndFrame); } // 部屋からの離脱 if (GUILayout.Button("Leave Room", GUILayout.Width(150))) { MonobitNetwork.LeaveRoom(); } // ホストの場合 if (MonobitNetwork.isHost) { // ゲームスタート if (!isGameStart && GUILayout.Button("Start Game", GUILayout.Width(150))) { this.isGameStart = true; // room.open = false; monobitView.RPC("GameStart", MonobitTargets.All, null); } // バトル終了 if (this.battleEndFrame <= 0) { // room.open = true; // 部屋から離脱する monobitView.RPC("LeaveRoomAll", MonobitTargets.All, null); } } // 他にルームが作成されている場合 if (MonobitNetwork.GetRoomData() != null && MonobitNetwork.GetRoomData().Length >= 1) { // 他の部屋に入室 if (GUILayout.Button("Enter Another Room", GUILayout.Width(150))) { // 一旦部屋から離脱する MonobitNetwork.LeaveRoom(); // 自身の値に対し、検索範囲の最初の閾値を設定する baseValueMin = (baseValue - baseValueIncrease < baseValueLow) ? baseValueLow : baseValue - baseValueIncrease; baseValueMax = (baseValue + baseValueIncrease > baseValueHigh) ? baseValueHigh : baseValue + baseValueIncrease; // 閾値から、クエリー検索のためのWHERE句を生成する string queryLobbyFilter = "Value>=" + baseValueMin + " AND Value<=" + baseValueMax; // ルームへの入室 MonobitNetwork.JoinRandomRoom(null, this.maxPlayers, Definitions.MatchmakingMode.SerialMatching, new LobbyInfo() { Kind = LobbyKind.Query, Name = "QueryLobby" }, queryLobbyFilter); } } }
void NetworkSettingWindow(int windowID) { // ゲームサーバー名の設定. GUILayout.BeginHorizontal(); GUILayout.Label("Create Room Name: "); this.roomName = GUILayout.TextField(this.roomName, 32); GUILayout.EndHorizontal(); // ゲームサーバーを起動する. GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (MonobitNetwork.inRoom) { //if (MonobitNetwork.isHost) //{ // if (GUILayout.Button("Start game")) // { // Debug.Log("Start game"); // var playerCustomParams = new Hashtable // { // ["isGameStarted"] = true // }; // MonobitNetwork.SetPlayerCustomParameters(playerCustomParams); // this.isGameStarted = true; // } //} //else //{ // if (GUILayout.Button("Leave room")) // { // Debug.Log("Leave room"); // MonobitNetwork.LeaveRoom(); // } //} } else { if (GUILayout.Button("Create room")) { this.CreateRoom(); } } GUILayout.EndHorizontal(); GUILayout.Space(20); // ゲームサーバーリスト. GUILayout.BeginHorizontal(); GUILayout.Label("Room List (Click To Join):"); GUILayout.EndHorizontal(); this.scrollPosition = GUILayout.BeginScrollView(this.scrollPosition, GUILayout.Width(380), GUILayout.Height(200)); var rooms = MonobitNetwork.GetRoomData(); if (rooms.Length > 0) { foreach (var room in rooms) { if (GUILayout.Button($"{room.name}({room.playerCount}/{room.maxPlayers})", GUI.skin.box, GUILayout.Width(360))) { if (!room.customParameters["password"].Equals("empty")) { Debug.Log($"Room:[{room.name}] is private room."); } MonobitNetwork.JoinRoom(room.name); } } } else { GUILayout.Label("No rooms"); } GUILayout.EndScrollView(); if (GUILayout.Button("Back title")) { this.OnClickBack(); } // ステータスの表示. var isHostDisplay = MonobitNetwork.isHost ? "(Host)" : ""; GUILayout.Label( MonobitNetwork.inRoom ? $"Room: {MonobitNetwork.room.name} {MonobitNetwork.room.playerCount}/{MonobitNetwork.room.maxPlayers} players {isHostDisplay}" : $"Rooms count: {MonobitNetwork.roomCountInLobby} InLobby Players count: {MonobitNetwork.clientCountInLobby}" ); }
/** * ルーム内でのGUI操作. */ private void OnGUI_InRoom() { // 自身のプレイヤーIDの表示 GUILayout.Label("Your ID : " + MonobitNetwork.player.ID); // ルーム内に存在するプレイヤー数の表示 GUILayout.Label("PlayerCount : " + MonobitNetwork.room.playerCount + " / " + ((MonobitNetwork.room.maxPlayers == 0) ? "-" : MonobitNetwork.room.maxPlayers.ToString())); // ルームの入室制限可否設定の表示 GUILayout.Label("Room isOpen : " + MonobitNetwork.room.open); // ルーム作成者が入力した値 GUILayout.Label("Room Owner Numeric Value : " + MonobitNetwork.room.customParameters["Value"]); // 自身が入力した値 GUILayout.Label("My Skill Level : " + baseValue); // 制限時間の表示 if (isGameStart) { GUILayout.Label("Rest Frame : " + this.battleEndFrame); } // 部屋からの離脱 if (GUILayout.Button("Leave Room", GUILayout.Width(150))) { MonobitNetwork.LeaveRoom(); } // ホストの場合 if (MonobitNetwork.isHost) { // ゲームスタート if (!isGameStart && GUILayout.Button("Start Game", GUILayout.Width(150))) { this.isGameStart = true; // room.open = false; monobitView.RPC("GameStart", MonobitTargets.All, null); } // バトル終了 if (this.battleEndFrame <= 0) { // room.open = true; // 部屋から離脱する monobitView.RPC("LeaveRoomAll", MonobitTargets.All, null); } } // 他にルームが作成されている場合 if (MonobitNetwork.GetRoomData() != null && MonobitNetwork.GetRoomData().Length >= 1) { // 他の部屋に入室 if (GUILayout.Button("Enter Another Room", GUILayout.Width(150))) { // 一旦部屋から離脱する MonobitNetwork.LeaveRoom(); isEnterAnotherRoom = true; } } }
// GUI制御 private void OnGUI() { // MUNサーバに接続している場合 if (MonobitNetwork.isConnect) { // ルームに入室している場合 if (MonobitNetwork.inRoom) { //ルーム内のプレイヤー一覧の表示 GUILayout.BeginHorizontal(); GUILayout.Label("PlayerList : "); foreach (MonobitPlayer player in MonobitNetwork.playerList) { GUILayout.Label(player.name + " "); } GUILayout.EndHorizontal(); // ルームからの退室 if (GUILayout.Button("Leave Room", GUILayout.Width(150))) { MonobitNetwork.LeaveRoom(); chatLog.Clear(); } // チャット発言文の入力 GUILayout.BeginHorizontal(); GUILayout.Label("Message : "); chatWord = GUILayout.TextField(chatWord, GUILayout.Width(400)); GUILayout.EndHorizontal(); // チャット発言文を送信する if (GUILayout.Button("Send", GUILayout.Width(100))) { monobitView.RPC("RecvChat", MonobitTargets.All, MonobitNetwork.playerName, chatWord); chatWord = ""; } // チャットログを表示する string msg = ""; for (int i = 0; i < 10; ++i) { msg += ((i < chatLog.Count) ? chatLog[i] : "") + "\r\n"; } GUILayout.TextArea(msg); } // ルームに入室していない場合 else { // ルーム名入力 GUILayout.BeginHorizontal(); GUILayout.Label("RoomName : "); roomName = GUILayout.TextField(roomName, GUILayout.Width(200)); GUILayout.EndHorizontal(); // ルームを作成して入室する if (GUILayout.Button("CreateRoom", GUILayout.Width(150))) { MonobitNetwork.CreateRoom(roomName); } // ルーム一覧を検索 foreach (RoomData room in MonobitNetwork.GetRoomData()) { System.String roomParam = System.String.Format("{0}({1}/{2})", room.name, room.playerCount, ((room.maxPlayers == 0) ? "-" : room.maxPlayers.ToString()) ); // ルームを選択して入室する if (GUILayout.Button("Enter Room : " + roomParam)) { MonobitNetwork.JoinRoom(room.name); } } } } // MUNサーバに接続していない場合 else { // プレイヤー名の入力 GUILayout.BeginHorizontal(); GUILayout.Label("PlayerName : "); MonobitNetwork.playerName = GUILayout.TextField( (MonobitNetwork.playerName == null) ? "" : MonobitNetwork.playerName, GUILayout.Width(200)); GUILayout.EndHorizontal(); // デフォルトロビーへの自動入室を許可する MonobitNetwork.autoJoinLobby = true; // MUNサーバに接続する if (GUILayout.Button("ConnectServer", GUILayout.Width(150))) { MonobitNetwork.ConnectServer("SinpleChat_v1.0"); } } }
/** * GUI制御. */ void OnGUI() { // GUI用の解像度を調整する Vector2 guiScreenSize = new Vector2(800, 480); if (Screen.width > Screen.height) { // landscape GUIUtility.ScaleAroundPivot(new Vector2(Screen.width / guiScreenSize.x, Screen.height / guiScreenSize.y), Vector2.zero); } else { // portrait GUIUtility.ScaleAroundPivot(new Vector2(Screen.width / guiScreenSize.y, Screen.height / guiScreenSize.x), Vector2.zero); } // MUNサーバに接続している場合 if (MonobitNetwork.isConnect) { // ルームに入室している場合 if (MonobitNetwork.inRoom) { // ルーム内のプレイヤー一覧の表示 GUILayout.BeginHorizontal(); GUILayout.Label("PlayerList : "); foreach (MonobitPlayer player in MonobitNetwork.playerList) { GUILayout.Label(player.name + " "); } GUILayout.EndHorizontal(); // チャット発言文の入力 GUILayout.BeginHorizontal(); GUILayout.Label("Message : "); chatWord = GUILayout.TextField(chatWord, GUILayout.Width(400)); GUILayout.EndHorizontal(); // チャット発言文を送信する if (GUILayout.Button("Send", GUILayout.Width(100))) { monobitView.RPC("RecvChat", MonobitTargets.All, MonobitNetwork.playerName, chatWord); chatWord = ""; } // チャットログを表示する string msg = ""; for (int i = 0; i < 10; ++i) { msg += ((i < chatLog.Count) ? chatLog[i] : "") + "\r\n"; } GUILayout.TextArea(msg); } // ルームに入室していない場合 else { // ルーム一覧を検索 foreach (RoomData room in MonobitNetwork.GetRoomData()) { // ルームを選択して入室する if (GUILayout.Button("Enter Room : " + room.name + "(" + room.playerCount + "/" + ((room.maxPlayers == 0) ? "-" : room.maxPlayers.ToString()) + ")")) { MonobitNetwork.JoinRoom(room.name); } } } } // MUNサーバに接続していない場合 else { // デフォルトロビーへの自動入室を許可する MonobitNetwork.autoJoinLobby = true; } }