// 채팅방 목록 최신화 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); } }
// 서버의 채팅방을 복사해 클라이언트에게 전달 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); }