Exemple #1
0
    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);
                }
            }
        }
    }
Exemple #2
0
    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);
    }
Exemple #3
0
    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);
    }
Exemple #4
0
    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++;
        }
    }