public void SavePersonData() { PersonInfoBean personInfo = new PersonInfoBean(); personInfo.id = personId; personInfo.valid = 1; PersonDetailsBean personDetails = new PersonDetailsBean(); int number = 0; for (int i = 0; i < PersonHandler.Instance.manager.personContainer.transform.childCount; i++) { Transform tfChild = PersonHandler.Instance.manager.personContainer.transform.transform.GetChild(i); Person itemPerson = tfChild.GetComponent <Person>(); if (!tfChild.tag.Equals(TagInfo.Tag_Person)) { continue; } //添加人 PersonDetailsItemBean personDetailsItem = new PersonDetailsItemBean(); personDetailsItem.position = new Vector3Bean(tfChild.localPosition); personDetailsItem.size = new Vector3Bean(tfChild.localScale); personDetailsItem.angle = new Vector3Bean(tfChild.localEulerAngles); personDetailsItem.bufferTime = itemPerson.bufferTime; Transform[] tfListPart = tfChild.GetComponentsInChildren <Transform>(); for (int f = 0; f < tfListPart.Length; f++) { //添加部件 Transform itemPart = tfListPart[f]; PersonDetailsItemPartBean personDetailsItemPart = new PersonDetailsItemPartBean(); personDetailsItemPart.position = new Vector3Bean(itemPart.localPosition); personDetailsItemPart.size = new Vector3Bean(itemPart.localScale); personDetailsItemPart.angle = new Vector3Bean(itemPart.localEulerAngles); personDetailsItemPart.partName = itemPart.name; personDetailsItem.listPartData.Add(personDetailsItemPart); } number++; personDetails.listPersonData.Add(personDetailsItem); } personInfo.person_number = number; personInfo.SetPersonDetilas(personDetails); personInfoService.UpdateData(personInfo); }
public void SetPersonNumber(PersonInfoBean personInfo) { PersonDetailsBean personDetails = personInfo.GetPersonDetilas(); if (manager.personContainer.transform.childCount < personInfo.person_number) { int offsetNumber = personInfo.person_number - manager.personContainer.transform.childCount; for (int i = 0; i < offsetNumber; i++) { GameObject objPersonModel = manager.GetPersonModel("Person"); GameObject objPerson = Instantiate(manager.personContainer, objPersonModel); } } for (int i = 0; i < manager.personContainer.transform.childCount; i++) { Transform tfChild = manager.personContainer.transform.GetChild(i); if (i >= personInfo.person_number) { #if UNITY_EDITOR DestroyImmediate(tfChild.gameObject); #else Destroy(tfChild.gameObject); #endif i--; } else { PersonDetailsItemBean personDetailsItem = personDetails.listPersonData[i]; Person person = CptUtil.AddCpt <Person>(tfChild.gameObject, out bool isNew); if (isNew) { manager.AddPerson(person); } person.SetData(personDetailsItem.position.GetVector3(), personDetailsItem.bufferTime, isNew); if (Application.isPlaying) { //tfChild.DOLocalMove(personDetailsItem.position.GetVector3(), 0.5f); tfChild.DOScale(personDetailsItem.size.GetVector3(), 0.5f); tfChild.DOLocalRotate(personDetailsItem.angle.GetVector3(), 0.5f); } else { //tfChild.localPosition = personDetailsItem.position.GetVector3(); tfChild.localScale = personDetailsItem.size.GetVector3(); tfChild.localEulerAngles = personDetailsItem.angle.GetVector3(); } Transform[] listPartTF = tfChild.GetComponentsInChildren <Transform>(); for (int f = 0; f < listPartTF.Length; f++) { Transform tfItemPart = listPartTF[f]; if (tfItemPart == tfChild) { continue; } for (int p = 0; p < personDetailsItem.listPartData.Count; p++) { PersonDetailsItemPartBean personDetailsItemPart = personDetailsItem.listPartData[p]; if (tfItemPart.name.Equals(personDetailsItemPart.partName)) { if (Application.isPlaying) { tfItemPart.DOLocalMove(personDetailsItemPart.position.GetVector3(), 0.5f); tfItemPart.DOScale(personDetailsItemPart.size.GetVector3(), 0.5f); tfItemPart.DOLocalRotate(personDetailsItemPart.angle.GetVector3(), 0.5f); } else { tfItemPart.localPosition = personDetailsItemPart.position.GetVector3(); tfItemPart.localScale = personDetailsItemPart.size.GetVector3(); tfItemPart.localEulerAngles = personDetailsItemPart.angle.GetVector3(); } break; } } } } } }