Example #1
0
    // 채팅방 목록 최신화
    public static void OnMsgChatRoomInfoOnClient(NetworkMessage netMsg)
    {
        Msg_ChatRoomInfo InfoMsg = netMsg.ReadMessage <Msg_ChatRoomInfo>();

        // 채팅방 정보를 새로 담기위해 초기화시킨다.
        MyNetManager.instance.Chatroom.Clear();

        // 개설된 방 개수 만큼 정보를 받는다.
        for (int i = 0; i < InfoMsg.roomNum.Length; i++)
        {
            // 방 정보를 갖는 구조체를 만든다.
            MyNetManager.StructChatroom roomInfo = new MyNetManager.StructChatroom();
            roomInfo.roomName    = InfoMsg.roomName[i];
            roomInfo.roomNum     = InfoMsg.roomNum[i];
            roomInfo.memberCount = InfoMsg.memberCount[i]; // 현재 방에 접속한 멤버가 누구인지 까지는 필요하지 않고 인원수만 가져온다.

            MyNetManager.instance.Chatroom.Add(roomInfo);  // 채팅방 목록에 방 추가
        }


        /* 현재 개설된 방을 클라이언트 화면에 출력 */

        // 만들어진 방이 한개라도 있다면 모든 방 삭제
        /* (childCount가 자식오브젝트를 하나 지울때마다 한개씩 줄어들것같지만 그렇지 않다. 처음 값을 참조할때 자식오브젝트가 2개였다면 for문을 수행하는 동안에도 2개임. 값을 복사해서 그렇다고함.) */

        for (int i = 0; i < MyNetManager.instance.m_roomListContent.transform.childCount; i++)
        {
            Destroy(MyNetManager.instance.m_roomListContent.transform.GetChild(i).gameObject);
        }

        // 채팅방 버튼 생성
        for (int i = 0; i < MyNetManager.instance.Chatroom.Count; i++)
        {
            // 버튼 프리팹 생성
            Button newChatRoom = Instantiate(MyNetManager.instance.m_chatRoomBtnPrfb);

            Text newRoomName    = newChatRoom.transform.GetChild(0).GetComponent <Text>();
            Text newRoomNum     = newChatRoom.transform.GetChild(1).GetComponent <Text>();
            Text newMemberCount = newChatRoom.transform.GetChild(2).GetComponent <Text>();

            // 채팅방 이름, 번호, 인원수
            newRoomName.text    = MyNetManager.instance.Chatroom[i].roomName;
            newRoomNum.text     = "" + MyNetManager.instance.Chatroom[i].roomNum;
            newMemberCount.text = MyNetManager.instance.Chatroom[i].memberCount + " 명이 접속중";

            // 버튼 콜백함수 지정
            newChatRoom.onClick.AddListener(() => MyNetManager.instance.GotoRoom(int.Parse(newRoomNum.text)));

            newChatRoom.transform.SetParent(MyNetManager.instance.m_roomListContent.transform);
        }
    }
Example #2
0
    // 서버의 채팅방을 복사해 클라이언트에게 전달
    public static void OnMsgChatRoomInfoOnServer(NetworkMessage netMsg)
    {
        Msg_ChatRoomInfo msg = netMsg.ReadMessage <Msg_ChatRoomInfo>();

        Msg_ChatRoomInfo InfoMsg = new Msg_ChatRoomInfo();


        for (int i = 0; i < MyNetManager.instance.Chatroom.Count; i++)
        {
            InfoMsg.roomName[i]    = MyNetManager.instance.Chatroom[i].roomName;
            InfoMsg.roomNum[i]     = MyNetManager.instance.Chatroom[i].roomNum;
            InfoMsg.memberCount[i] = MyNetManager.instance.Chatroom[i].member.Count;
        }

        NetworkServer.SendToClient(msg.clientId, MyMsgType.ChatRoomInfo, InfoMsg);
    }