using AX.MessageSystem; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class GetUsersInOne : MonoBehaviour { public GameObject itemPre; public List<CloneGameObjInfo> users = new List<CloneGameObjInfo>(); void Awake() { if(itemPre == null) { itemPre = Resources.Load("4GTransfer/4GPersonItemOne") as GameObject; } MessageDispatcher.AddListener("UpdateTransferUserItems", CreateItems); } private void OnDestroy() { MessageDispatcher.RemoveListener("UpdateTransferUserItems", CreateItems); } void CreateItems(IMessage obj) { users = (List<CloneGameObjInfo>)obj.Data; //删除没有同传的人员 for (int i = 0; i < transform.childCount; i++) { CloneGameObjInfo checkInfo = transform.GetChild(i).GetComponent<TransferPersonItemOne>().info; if (/*!users.Contains(checkInfo)*/ usersContains(users, checkInfo) == false) { Destroy(transform.GetChild(i).gameObject); } } foreach (CloneGameObjInfo userInfo in users) { if (!checkHasItem(userInfo)) { GameObject item = Instantiate(itemPre, transform); UserData userData = CurrentUserInfo.room.FindUserById(userInfo.UserID); item.GetComponent<TransferPersonItemOne>().SetPersonInfo(userInfo, userData); } } for (int i = 0; i < transform.childCount; i++) { transform.GetChild(i).name = "4GPersonItemOne-" + i.ToString(); } } /// <summary> /// 查找是否已经生成该人员的toggle /// </summary> /// <param name="userInfo"></param> /// <returns></returns> private bool checkHasItem(CloneGameObjInfo userInfo) { for (int i = 0; i < transform.childCount; i++) { CloneGameObjInfo checkInfo = transform.GetChild(i).GetComponent<TransferPersonItemOne>().info; if (checkInfo.gameObjID == userInfo.gameObjID) { return true; } } return false; } private bool usersContains(List<CloneGameObjInfo> list, CloneGameObjInfo checkInfo) { foreach (CloneGameObjInfo info in list) { if (info.gameObjID == checkInfo.gameObjID) { return true; } } return false; } }