// Update is called once per frame void Update() { /*if (Input.GetKeyDown(KeyCode.F3) && !MonobitNetwork.isHost) * { * _monobitView.RPC("LoadStageRequest", MonobitTargets.Host); * } * * //エスケープキーでゲームとチャットを切り替え * if (Input.GetKeyDown(KeyCode.Escape)) * _InPlay = !_InPlay; */ //サーバーに未接続のとき自動で接続 if (!MonobitNetwork.isConnect) { MonobitNetwork.autoJoinLobby = true; MonobitNetwork.ConnectServer("SimpleServer"); } else { MonobitNetwork.CreateRoom("test"); //部屋に入ったときにプレイヤーを生成 /*if (MonobitNetwork.inRoom && _player == null) * { * _player = MonobitNetwork.Instantiate("unitychan 1", Vector3.zero, Quaternion.identity, 0); * _player.transform.position = new Vector3(Random.Range(10, 20), 1f, Random.Range(-15, 20)); * _cameraCtrl.target = _player.transform; * }*/ } }
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"), "こんにちは"); } }
/** * ルーム作成&入室設定. */ private void OnGUI_CreateAndJoinRoom() { // 任意の名称を持つルームを作成する if (GUILayout.Button("Create Room", GUILayout.Width(150))) { // カスタムルームパラメータから、ロビー送信パラメータを抽出(とりあえず全部送信するようにする) string[] customRoomParametersForLobby = new string[this.customRoomParam.Keys.Count]; int keyIndex = 0; foreach (string key in this.customRoomParam.Keys) { customRoomParametersForLobby[keyIndex] = key; keyIndex++; } RoomSettings roomSettings = new RoomSettings() { isVisible = this.isVisible, isOpen = true, maxPlayers = this.maxPlayers, roomParameters = this.customRoomParam, lobbyParameters = customRoomParametersForLobby }; MonobitNetwork.CreateRoom(null, roomSettings, null); } // カスタムルームパラメータと一致するランダム入室 if (GUILayout.Button("Join Room", GUILayout.Width(150))) { MonobitNetwork.JoinRandomRoom(this.customRoomParam, 0); } }
// 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"); } } }
private async UniTask TestMode() { MonobitNetwork.playerName = "TestPlayer"; MonobitNetwork.autoJoinLobby = true; MonobitNetwork.ConnectServer("v1.0"); await UniTask.WaitUntil(() => MonobitNetwork.isConnect); MonobitNetwork.CreateRoom("TestRoom"); }
private async UniTask PrivateCreateRoom() { Debug.Log("Creating room..."); if (newRoomName == "" || newRoomName == null) { newRoomName = "New Room"; } MonobitNetwork.CreateRoom(newRoomName); modal.SetActive(true); await UniTask.WaitUntil(() => MonobitNetwork.inRoom); SceneManager.LoadScene("Game"); Debug.Log("Success creating room!"); }
/// <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)); } }
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 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)); } }
// 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"); } } }
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); } } } } }
/** * ルーム作成設定. */ private void OnGUI_CreateRoom() { // 表題 GUILayout.Label("Create Room", new GUIStyle() { normal = new GUIStyleState() { textColor = Color.white }, fontStyle = FontStyle.Bold }); GUILayout.BeginHorizontal(); GUILayout.Space(25); GUILayout.BeginVertical(); GUILayout.Label("Custom Parameters"); // ルームのカスタムパラメータの値入力 if (this.customRoomParam.Count > 0) { Hashtable tmp = new Hashtable(this.customRoomParam); foreach (string key in this.customRoomParam.Keys) { GUILayout.BeginHorizontal(); GUILayout.Label("Key : " + key + ", Value : ", GUILayout.Width(125)); tmp[key] = GUILayout.TextField(this.customRoomParam[key].ToString(), GUILayout.Width(200)); if (GUILayout.Button("Remove", GUILayout.Width(75))) { tmp.Remove(key); } GUILayout.EndHorizontal(); } this.customRoomParam = tmp; } // ルームのカスタムパラメータのキー追加 GUILayout.BeginHorizontal(); GUILayout.Label("New Key : ", GUILayout.Width(100)); customRoomKey = GUILayout.TextField(customRoomKey, GUILayout.Width(200)); if (GUILayout.Button("Add", GUILayout.Width(75))) { if (!string.IsNullOrEmpty(customRoomKey)) { this.customRoomParam[customRoomKey] = "" as object; customRoomKey = ""; } } GUILayout.EndHorizontal(); // 自分の作成するルーム名を公開設定にするかどうかのフラグ this.isVisible = GUILayout.Toggle(this.isVisible, "Visible room"); // 自分のルームに入室可能な収容人数の設定 GUILayout.BeginHorizontal(new GUIStyle() { alignment = TextAnchor.MiddleLeft }); GUILayout.Label("Max Players : ", GUILayout.Width(100)); string tmpInput = GUILayout.TextField(this.maxPlayers.ToString(), GUILayout.Width(50)); byte.TryParse(tmpInput, out this.maxPlayers); // 任意の名称を持つルームを作成する if (GUILayout.Button("Create Room", GUILayout.Width(150))) { // カスタムルームパラメータから、ロビー送信パラメータを抽出(とりあえず全部送信するようにする) string[] customRoomParametersForLobby = new string[this.customRoomParam.Keys.Count]; int keyIndex = 0; foreach (string key in this.customRoomParam.Keys) { customRoomParametersForLobby[keyIndex] = key; keyIndex++; } RoomSettings roomSettings = new RoomSettings() { isVisible = this.isVisible, isOpen = true, maxPlayers = this.maxPlayers, roomParameters = this.customRoomParam, lobbyParameters = customRoomParametersForLobby }; MonobitNetwork.CreateRoom(null, roomSettings, null); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUILayout.EndHorizontal(); }
// 作成ボタンが押された際に呼ばれる public void OnClickCreate() { // 引数にはルーム名、Start()内で設定したルーム設定、ロビーはデフォルトのロビー // なためnull、を入れています。 MonobitNetwork.CreateRoom(m_RoomName, m_RoomSettings, null); }
/** * @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_CreateOrJoinRoom() { // 値の入力 GUILayout.BeginHorizontal(); GUILayout.Label("Your Numeric Value(" + baseValueLow + "-" + baseValueHigh + ") : ", GUILayout.Width(200)); baseValue = Convert.ToInt32(GUILayout.TextField(baseValue.ToString(), GUILayout.Width(50))); GUILayout.EndHorizontal(); // ルーム最大人数の入力 GUILayout.BeginHorizontal(); GUILayout.Label("Room Max Players : ", GUILayout.Width(200)); maxPlayers = Convert.ToByte(GUILayout.TextField(maxPlayers.ToString(), GUILayout.Width(50))); GUILayout.EndHorizontal(); // ルームの作成 if (GUILayout.Button("Create Room", GUILayout.Width(250))) { // 入力した値が範囲外の場合、入力を無視する if (baseValue < baseValueLow || baseValue > baseValueHigh) { Debug.LogWarning("Your value must between" + baseValueLow + " and " + baseValueHigh); } else { // 自身の値をクエリーパラメータとして代入 customRoomParam["Value"] = baseValue; // ロビー抽出バラメータの設定 string[] customRoomParametersForLobby = { "Value" }; // ルームの作成 RoomSettings roomSettings = new RoomSettings() { isVisible = true, isOpen = true, maxPlayers = this.maxPlayers, roomParameters = this.customRoomParam, lobbyParameters = customRoomParametersForLobby }; MonobitNetwork.CreateRoom(null, roomSettings, null); } } // ルームへの入室 if (GUILayout.Button("Join Room", GUILayout.Width(250))) { // 入力した値が範囲外の場合、入力を無視する if (baseValue < baseValueLow || baseValue > baseValueHigh) { Debug.LogWarning("Your value must between" + baseValueLow + " and " + baseValueHigh); } else { // 自身の値に対し、検索範囲の最初の閾値を設定する 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); } } }
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制御. */ 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(); 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); chatLog.Clear(); } // ルーム一覧を検索 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("SimpleChat_v1.0"); } } }
/// <summary>ルームを作る</summary> void CreateRoom() { MonobitNetwork.CreateRoom(this.roomName, this.commonRoomSettings, MonobitNetwork.lobby); }
void OnJoinRoomFailed() { Debug.Log("OnJoinRoomFailed"); MonobitNetwork.CreateRoom("AutoLoginRoom"); }
/** * 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"); } } }
public static void CreateRoom(string roomName) { MonobitNetwork.playerName = "host"; MonobitNetwork.CreateRoom(roomName); Debug.Log("ルーム【" + roomName + "】を作成"); }