public void DialogToBehaviour(Dialog dialog) { while (dialogPieceBehaviours.Count > 0) { dialogPieceBehaviours[0].DelelteSelf(); } //恢复节点与连接 foreach (var v in dialog.dialogStream) { GameObject piece = Instantiate(DialogPiecePrefab); DialogPieceBehaviour behaviour = piece.GetComponent <DialogPieceBehaviour>(); RectTransform transform = piece.GetComponent <RectTransform>(); transform.SetParent(ScrollZone); transform.localScale = new Vector3(1, 1, 1); transform.anchoredPosition = v.NodePosition; behaviour.ContentText.text = v.content; behaviour.SpeakerText.text = v.speaker; behaviour.QueueIndex = DialogPieces.Count; DialogPieces.Add(piece); dialogPieceBehaviours.Add(behaviour); } foreach (var v in dialogPieceBehaviours) { int?x = dialog.dialogStream[v.QueueIndex].nextPiece; if (x != null) { MenuOptionBehaviour menu = v.DefaultOption.GetComponent <MenuOptionBehaviour>(); menu.parent = DialogPieces[v.QueueIndex]; menu.AddNewLink(); menu.nextDialogPieceNode = DialogPieces[dialog.dialogStream[v.QueueIndex].nextPiece.Value]; menu.tempLink.GetComponent <LinkLineBehaiour>().next = menu.nextDialogPieceNode; menu.nextDialogPieceNode.GetComponent <DialogPieceBehaviour>().formarDialogLinkLine.Add(menu.tempLink.GetComponent <LinkLineBehaiour>()); menu.nextDialogPieceNode.GetComponent <DialogPieceBehaviour>().formarDialogPieceNode.Add(menu.parent); } for (int i = 0; i < dialog.dialogStream[v.QueueIndex].dialoganswer.Count; i++) { v.addMenuPiece(); MenuOptionBehaviour menu = v.answermenu[v.answermenu.Count - 1].GetComponent <MenuOptionBehaviour>(); menu.parent = DialogPieces[v.QueueIndex]; menu.AnswerContent.GetComponent <InputField>().text = dialog.dialogStream[v.QueueIndex].dialoganswer[i].answerContent; if (dialog.dialogStream[v.QueueIndex].dialoganswer[i].nextPiece != null) { menu.AddNewLink(); menu.nextDialogPieceNode = DialogPieces[dialog.dialogStream[v.QueueIndex].dialoganswer[i].nextPiece.Value]; menu.tempLink.GetComponent <RectTransform>().SetParent(ScrollZone); menu.tempLink.GetComponent <RectTransform>().localScale = new Vector3(1, 1, 1); menu.tempLink.GetComponent <LinkLineBehaiour>().next = menu.nextDialogPieceNode; menu.nextDialogPieceNode.GetComponent <DialogPieceBehaviour>().formarDialogLinkLine.Add(menu.tempLink.GetComponent <LinkLineBehaiour>()); menu.nextDialogPieceNode.GetComponent <DialogPieceBehaviour>().formarDialogPieceNode.Add(menu.parent); } } } }
public void addMenuPiece() { MenuOptionBehaviour _p = answermenu[answermenu.Count - 1].GetComponent <MenuOptionBehaviour>(); if (_p.AnswerContent.GetComponent <InputField>().text == "" && _p.tempLink == null && _p != DefaultOption) { return; } GameObject option = Instantiate(MenuoptionPrefab); option.GetComponent <MenuOptionBehaviour>().parent = gameObject; RectTransform opt = option.GetComponent <RectTransform>(); float height = option.GetComponent <RectTransform>().rect.height; opt.SetParent(MenuZoom.GetComponent <RectTransform>()); opt.anchoredPosition = DefaultOption.GetComponent <RectTransform>().anchoredPosition; opt.localPosition = new Vector3(0, -(answermenu.Count - 0.5f) * height, 0); opt.localScale = opt.parent.localScale; answermenu.Add(option); }
public void DelelteSelf() { foreach (var v in formarDialogLinkLine) { v.LostTrack(); } for (var v = 0; v < answermenu.Count; v++) { int count = answermenu.Count; MenuOptionBehaviour menuOption = answermenu[v].GetComponent <MenuOptionBehaviour>(); if (menuOption.nextDialogPieceNode != null) { menuOption.nextDialogPieceNode.GetComponent <DialogPieceBehaviour>().formarDialogLinkLine .Remove(menuOption.tempLink.GetComponent <LinkLineBehaiour>()); menuOption.nextDialogPieceNode.GetComponent <DialogPieceBehaviour>().formarDialogPieceNode .Remove(gameObject); Destroy(menuOption.tempLink); } } DialogManager.instance.DeleleteDialogPiece(gameObject); Destroy(gameObject); }
public void DeleteNullAnswerOption() { int i = answermenu.Count - 2;//最后一个留着 while (i > 0) { MenuOptionBehaviour _p = answermenu[i].GetComponent <MenuOptionBehaviour>(); if (_p.AnswerContent.GetComponent <InputField>().text == "" && _p.tempLink == null) { Destroy(answermenu[i]); answermenu.RemoveAt(i); } i--; } if (DefaultOption.GetComponent <MenuOptionBehaviour>().tempLink == null) { if (answermenu[answermenu.Count - 1] != DefaultOption) { Destroy(answermenu[answermenu.Count - 1]); answermenu.RemoveAt(answermenu.Count - 1); } } RectTransform _rt; float height = DefaultOption.GetComponent <RectTransform>().rect.height; Vector3 _pos = DefaultOption.GetComponent <RectTransform>().localPosition; i = 1; while (answermenu.Count > 1 && i < answermenu.Count) { _rt = answermenu[i].GetComponent <RectTransform>(); _rt.localPosition = _pos - new Vector3(0, i * height, 0); i++; } }