예제 #1
0
        /**
         * 未接続中のOnGUI制御.
         */
        public void OnGUI_Disconnect()
        {
            // 自分の名前を入力する
            GUILayout.BeginHorizontal();
            GUILayout.Label("Your Name : ");
            this.myName = GUILayout.TextField(this.myName, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            // サーバへの接続
            if (GUILayout.Button("Connect Server", GUILayout.Width(200)))
            {
                // 空欄はNG
                if (string.IsNullOrEmpty(this.myName))
                {
                    Debug.LogWarning("Your name is null.");
                }
                else
                {
                    // プレイヤー名を設定
                    MonobitNetwork.player.name = this.myName;

                    // デフォルトロビーへの強制入室をONにする
                    MonobitNetwork.autoJoinLobby = true;

                    // サーバに接続する
                    MonobitNetwork.ConnectServer("SearchPlayer_v1.0");
                }
            }
        }
예제 #2
0
    void Start()
    {
        Application.targetFrameRate = 100;

        UnityEngine.XR.XRSettings.enabled = false;

        head   = Head.GetComponent <Head>();
        player = Player.GetComponent <Player>();

        laserScale = head.LaserScale.ToString();
        moveSpeed  = player.Speed.ToString();

        Debug.Log("connect...");
        MonobitNetwork.sendRate         = 100;
        MonobitNetwork.updateStreamRate = 100;
        MonobitNetwork.autoJoinLobby    = true;
        MonobitNetwork.ConnectServer("0.0.1");

        Observable.Interval(System.TimeSpan.FromMilliseconds(10)).Subscribe(l =>
        {
            if (mode == PlayMode.Gaint)
            {
                monobitView.RpcSecure("GaintTransform", MonobitTargets.Others, false, false, Head.transform.localPosition, Head.transform.localRotation.eulerAngles);
                //monobitView.RPC("GaintTransform", MonobitTargets.Others, Head.transform.localPosition, Head.transform.localRotation.eulerAngles);
            }

            if (mode == PlayMode.Mini)
            {
                monobitView.RpcSecure("MiniTransform", MonobitTargets.Others, false, false, Player.transform.localPosition);
                //monobitView.RPC("MiniTransform", MonobitTargets.Others, Player.transform.localPosition);
            }
        }).AddTo(this);
    }
예제 #3
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);
        }
    }
예제 #4
0
    // 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;
             * }*/
        }
    }
예제 #5
0
    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"), "こんにちは");
        }
    }
예제 #6
0
        /**
         * 開始関数.
         */
        public void Awake()
        {
            // デフォルトロビーへの強制入室をONにする
            MonobitNetwork.autoJoinLobby = true;

            // MUNサーバに接続する
            MonobitNetwork.ConnectServer("RoomFilter_v1.0");
        }
예제 #7
0
    void Start()
    {
        //デフォルトロビーへの自動入室を許可する
        MonobitNetwork.autoJoinLobby = true;

        //MUNサーバーに接続
        MonobitNetwork.ConnectServer("ActionSample_v1.0");
    }
예제 #8
0
 /// <summary>
 /// ボイスチャットサーバーへの接続処理
 /// </summary>
 /// <param name="playername"></param>
 /// <param name="roomname"></param>
 public void StartVoiceChat(string playername, string roomname)
 {
     MonobitNetwork.playerName    = playername;
     MonobitNetwork.autoJoinLobby = true;
     MonobitNetwork.ConnectServer("SimpleVoiceChat_v1.0");
     Debug.Log("VC_StartConnecting!");
     StartCoroutine(WaitConnectedCoroutine(playername, roomname));
 }
예제 #9
0
        /**
         * 開始関数.
         */
        public void Awake()
        {
            // デフォルトロビーへの強制入室をOFFにする
            MonobitNetwork.autoJoinLobby = false;

            // MUNサーバに接続する
            MonobitNetwork.ConnectServer("KeyValueSearch_v1.0");
        }
예제 #10
0
        private int baseValueLow      = 0;    // 範囲検索の最小下限

        /**
         * 開始関数.
         */
        public void Awake()
        {
            // デフォルトロビーへの強制入室をOFFにする
            MonobitNetwork.autoJoinLobby = false;

            // MUNサーバに接続する
            MonobitNetwork.ConnectServer("NumericMatching_v1.0");
        }
예제 #11
0
 public void Awake()
 {
     if (!MonobitNetwork.isConnect)
     {
         MonobitNetwork.autoJoinLobby = true;
         MonobitNetwork.ConnectServer(gameVersion);
     }
 }
예제 #12
0
    // Start is called before the first frame update
    void Start()
    {
        // デフォルトロビーへの自動入室を許可する
        MonobitNetwork.autoJoinLobby = true;

        // MUNサーバに接続する
        MonobitNetwork.ConnectServer(serverName);
    }
예제 #13
0
    private async UniTask TestMode()
    {
        MonobitNetwork.playerName    = "TestPlayer";
        MonobitNetwork.autoJoinLobby = true;
        MonobitNetwork.ConnectServer("v1.0");
        await UniTask.WaitUntil(() => MonobitNetwork.isConnect);

        MonobitNetwork.CreateRoom("TestRoom");
    }
예제 #14
0
    public override void OnLeftRoom()
    {
        Debug.Log("On left room.");

        Observable.Timer(System.TimeSpan.FromSeconds(1)).Subscribe(_ =>
        {
            Debug.Log("reconnect...");
            MonobitNetwork.ConnectServer("0.0.1");
        }).AddTo(this);
    }
예제 #15
0
    IEnumerator ConnetSequence()
    {
        yield return(new WaitForEndOfFrame());

        // デフォルトロビーへの自動入室を許可する
        MonobitNetwork.autoJoinLobby = true;

        // MUNサーバに接続する
        MonobitNetwork.ConnectServer(serverName);
        connectStep = ConnectStep.ServerConnecting;

        dialogManager.DialogButton(serverName + "へ接続します");
        while (true)
        {
            yield return(new WaitForSeconds(1.0f));

            if (MonobitNetwork.isConnect)
            {
                connectStep = ConnectStep.LobbyEntering;
                break;
            }
        }

        dialogManager.SetMessage(serverName + "へ接続完了。\nデフォルトロビーに入ります");
        while (true)
        {
            yield return(new WaitForSeconds(1.0f));

            if (MonobitNetwork.inLobby)
            {
                connectStep = ConnectStep.NameEntry;
                break;
            }
        }
        bool   onEntered  = false;
        string playerName = "";

        dialogManager.InputDialog(
            "デフォルトロビーに入りました。\nプレイヤー名を入力してください",
            "Enter",
            () => {
            onEntered  = true;
            playerName = dialogManager.GetInputValue();
        }
            );
        while (!onEntered)
        {
            yield return(new WaitForSeconds(0.125f));
        }
        dialogManager.DialogButton(playerName + "さん、いらっしゃいませ");
        MonobitNetwork.playerName = playerName;

        yield return(null);
    }
예제 #16
0
    // 開始関数
    public void Awake()
    {
        // デフォルトロビーへの強制入室をONにする。
        MonobitNetwork.autoJoinLobby = true;

        // ホストのシーンと同じシーンを部屋に入室した人もロードする。
        MonobitNetwork.autoSyncScene = true;

        // まだ未接続の場合、MonobitNetworkに接続する。
        if (!MonobitNetwork.isConnect)
        {
            MonobitNetwork.ConnectServer("0.9");
        }
    }
예제 #17
0
    // 開始関数
    public void Awake()
    {
        // デフォルトロビーへの強制入室をONにする。
        MonobitNetwork.autoJoinLobby = true;

        // ホストのシーンと同じシーンを部屋に入室した人もロードする。
        MonobitNetwork.autoSyncScene = true;

        // まだ未接続の場合、MonobitNetworkに接続する。
        if (MonobitNetwork.connectionStateDetailed == PeerState.PeerCreated)
        {
            MonobitNetwork.ConnectServer("RandomMatchingReconnect_v1.0");
        }
    }
예제 #18
0
    void OnClickStartButton()
    {
        // // 自動でデフォルトのロビーへ入室する
        // MonobitNetwork.autoJoinLobby = true;

        var name = this.playerName.Trim();

        if (string.IsNullOrEmpty(name))
        {
            Debug.LogWarning("User name is empty");
            return;
        }

        MonobitNetwork.playerName = name;
        MonobitNetwork.ConnectServer("ESUNIDRA_v_0_0_2");
    }
예제 #19
0
    private async UniTask ConnectServer()
    {
        Debug.Log("Connecting to server...");
        modal.SetActive(true);

        var playerName = PlayerPrefs.GetString("PlayerName", "Player");

        MonobitNetwork.playerName    = playerName;
        MonobitNetwork.autoJoinLobby = true;
        MonobitNetwork.ConnectServer(gameVersion);

        await UniTask.WaitUntil(() => MonobitNetwork.isConnect);

        modal.SetActive(false);
        Debug.Log("Success connecting to server!");
    }
        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 (bSelectMenu == false)
            {
                if (!MonobitNetwork.isConnect)
                {
                    if (GUILayout.Button("Connect", GUILayout.Width(150)))
                    {
                        bSelectMenu = true;
                        MonobitNetwork.autoJoinLobby = true;
                        MonobitNetwork.ConnectServer("MonobitAutoLoginTemplete_v0.1");
                    }
                }
                else if (MonobitNetwork.inRoom)
                {
                    if (!bStart)
                    {
                        if (GUILayout.Button("GameStart", GUILayout.Width(150)))
                        {
                            bSelectMenu = true;
                            monobitView.RPC("GameStart", MonobitTargets.All, null);
                        }
                    }
                    else
                    {
                        if (GUILayout.Button("Disconnect", GUILayout.Width(150)))
                        {
                            MonobitNetwork.DisconnectServer();
                        }
                    }
                }
            }
        }
    // 開始関数
    public void Awake()
    {
        // 接続フラグを未接続に
        bConnect = false;

        // デフォルトロビーへの強制入室をONにする。
        MonobitNetwork.autoJoinLobby = true;

        // ホストのシーンと同じシーンを部屋に入室した人もロードする。
        MonobitNetwork.autoSyncScene = true;

        // まだ未接続の場合、MonobitNetworkに接続する。
        if (MonobitNetwork.connectionStateDetailed == PeerState.PeerCreated)
        {
            MonobitNetwork.ConnectServer("0.9");
        }
    }
예제 #22
0
    // スタートボタンクリック時
    public void OnClickStart()
    {
        // 名前が入力されていない時なにもしない
        if (userName == "")
        {
            Debug.Log("名前が入力されていません");
            return;
        }
        Debug.Log("ゲーム開始");
        // 自動でデフォルトのロビーへと入室する
        MonobitEngine.MonobitNetwork.autoJoinLobby = true;


        MonobitNetwork.playerName = userName;

        MonobitNetwork.ConnectServer("SinpleChat_v1.0");
        //
    }
예제 #23
0
    public void onClickMainBtn()     //mainボタン押下処理
    {
        switch (gameStatus)
        {
        case STS.PLAYER:
            if (inputF.text != "")
            {
                MonobitNetwork.playerName = inputF.text;
                MonobitNetwork.ConnectServer("NetworkSample_v1.0");
                setRoom();
            }
            break;

        case STS.ROOM:
            if (inputF.text != "")
            {
                string Rname = inputF.text;
                MonobitEngine.RoomSettings settings = new MonobitEngine.RoomSettings();
                settings.maxPlayers = 4;                        //max4人

                MonobitNetwork.JoinOrCreateRoom(Rname, settings, null);
                setRedy();
            }
            break;

        case STS.REDY:

            break;

        case STS.GAME:
            if (inputF.text != "")
            {
                chatWord = inputF.text;
                monobitView.RPC("RecvChat", MonobitTargets.All, MonobitNetwork.playerName, chatWord);
                inputF.text = "";
                chatWord    = "";
            }
            break;
        }
    }
예제 #24
0
        /// <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));
            }
        }
예제 #25
0
    void Update()
    {
        if (!MonobitNetwork.isConnect)
        {
            MonobitNetwork.autoJoinLobby = true;
            MonobitNetwork.ConnectServer("test");
        }

        if (IsFade)
        {
            return;
        }
        IsFade = IsBackTitle || IsEnter;
        if (IsBackTitle)
        {
            SceneLoader.Load("SelectScene");
        }
        else if (IsEnter)
        {
            JoinRoom(nextRoom);
        }
    }
    // ウィンドウ表示
    void WindowGUI(int WindowID)
    {
        GUIStyle style = new GUIStyle();

        style.alignment = TextAnchor.MiddleCenter;
        GUIStyleState stylestate = new GUIStyleState();

        stylestate.textColor = Color.white;
        style.normal         = stylestate;
        if (bDisconnecting)
        {
            GUILayout.Label("MUN is disconnect.\nAre you reconnect?", style);
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Yes", GUILayout.Width(50)))
            {
                // もう一度接続処理を実行する
                bDisconnecting = false;
                bReconnecting  = true;
                m_bGameStart   = false;
                spawnMyChara   = false;
                MonobitNetwork.ConnectServer("RandomMatchingReconnect_v1.0");
            }
            if (GUILayout.Button("No", GUILayout.Width(50)))
            {
                bDisconnecting = false;

                // シーンをオフラインシーンへ
                MonobitNetwork.LoadLevel(OfflineSceneReconnect.SceneNameOffline);
            }
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
        }
        else
        {
            GUILayout.Label("reconnecting...", style);
        }
    }
예제 #27
0
        // ウィンドウ表示
        void OnGUI_UnsafeDisconnect(int WindowID)
        {
            GUIStyle style = new GUIStyle();

            style.alignment = TextAnchor.MiddleCenter;
            GUIStyleState stylestate = new GUIStyleState();

            stylestate.textColor = Color.white;
            style.normal         = stylestate;
            if (isDisconnecting)
            {
                GUILayout.Label("MUN is disconnect.\nAre you reconnect?", style);
                GUILayout.BeginHorizontal();
                GUILayout.FlexibleSpace();
                if (GUILayout.Button("Yes", GUILayout.Width(50)))
                {
                    // もう一度接続処理を実行する
                    isDisconnecting = false;
                    isReconnecting  = true;
                    isGameStart     = false;
                    isGameEnd       = false;
                    MonobitNetwork.ConnectServer("RakeupGame_ServerSide_v1.0");
                }
                if (GUILayout.Button("No", GUILayout.Width(50)))
                {
                    isDisconnecting = false;

                    // シーンをオフラインシーンへ
                    MonobitNetwork.LoadLevel(OfflineSceneReconnect.SceneNameOffline);
                }
                GUILayout.FlexibleSpace();
                GUILayout.EndHorizontal();
            }
            else
            {
                GUILayout.Label("reconnecting...", style);
            }
        }
예제 #28
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();

                    // ルームからの退室
                    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");
                }
            }
        }
예제 #29
0
        /**
         * @brief   オフライン中のGUI表示.
         * @param   isDispInputGUI  入力系GUIを表示するかどうかのフラグ(縁取り文字描画機能を活かした場合の、多重描画を防止するため).
         * @param   state           文字表示色.
         */
        private void OnGUI_Offline(bool isDispInputGUI, GUIStyleState state)
        {
            // プレイヤー名入力GUIレイヤー
            {
                // Header
                GUILayout.Label("Player Name Entry", new GUIStyle()
                {
                    normal = state, fontSize = 24
                });
                GUILayout.BeginHorizontal();
                GUILayout.Space(25);
                GUILayout.BeginVertical();

                GUILayout.BeginHorizontal();
                {
                    // プレイヤー名の入力欄の表示
                    GUILayout.Label("Input player name:", new GUIStyle()
                    {
                        normal = state, fontSize = 16, margin = new RectOffset(6, 6, 6, 6), fixedWidth = 140
                    });
                    if (isDispInputGUI)
                    {
                        MonobitNetwork.playerName = GUILayout.TextField((MonobitNetwork.playerName == null) ? "" : MonobitNetwork.playerName, GUILayout.Width(150));
                    }

                    // サーバ接続ボタン入力表示
                    if (isDispInputGUI)
                    {
                        if (GUILayout.Button("Connect Server", GUILayout.Width(150)))
                        {
                            // 名前欄が空欄であれば、GUIDで生成したプレイヤー名でサーバに接続
                            if (MonobitNetwork.playerName == null || MonobitNetwork.playerName.Length <= 0)
                            {
                                MonobitNetwork.playerName = Guid.NewGuid().ToString();
                            }

                            // デフォルトロビーへの強制入室をONにする。
                            MonobitNetwork.autoJoinLobby = true;

                            // デバッグログ出力を無効にする
                            MonobitNetwork.LogLevel = MonobitLogLevel.Informational;

                            // まだ未接続の場合、MonobitNetworkに接続する。
                            if (!MonobitNetwork.isConnect)
                            {
                                isDisconnecting = false;
                                isReconnecting  = false;
                                isGameStart     = false;
                                isGameEnd       = false;
                                MonobitNetwork.ConnectServer("RakeupGame_ServerSide_v1.0");
                            }
                        }
                    }
                }
                GUILayout.EndHorizontal();

                // Footer
                GUILayout.EndVertical();
                GUILayout.EndHorizontal();
            }
        }
예제 #30
0
    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();
        }
    }