public DialogueNode CreateDialogueNode(string nodeName, Vector2 screenPos)
    {
        var dialogueNode = DialogueNode.CreateNode(nodeName, nodeName, false);

        dialogueNode.styleSheets.Add(_nodeUss);

        var inputPort = GeneratePort(dialogueNode, Direction.Input, Port.Capacity.Multi);

        inputPort.portName = "Input";
        dialogueNode.inputContainer.Add(inputPort);


        var button = new Button(() => { AddChoicePort(dialogueNode); })
        {
            text = "New Choice"
        };

        dialogueNode.titleButtonContainer.Add(button);

        var textField = new TextField(string.Empty);

        textField.RegisterValueChangedCallback(evt => {
            dialogueNode.DialogueText = evt.newValue;
            dialogueNode.title        = evt.newValue;
        });
        textField.SetValueWithoutNotify(dialogueNode.title);
        dialogueNode.mainContainer.Add(textField);

        dialogueNode.RefreshExpandedState();
        dialogueNode.RefreshPorts();
        dialogueNode.SetPosition(new Rect(screenPos, DefaultNodeSize));

        return(dialogueNode);
    }
    private DialogueNode GenerateEntryPointNode()
    {
        var node = DialogueNode.CreateNode("Start", "ENTRYPOINT", true);

        node.SetPosition(new Rect(100, 200, 100, 100));

        var generatedPort = GeneratePort(node, Direction.Output);

        generatedPort.portName = "Next";
        node.outputContainer.Add(generatedPort);


        node.capabilities &= ~Capabilities.Movable;   //不可移动
        node.capabilities &= ~Capabilities.Deletable; //不可删除

        node.RefreshExpandedState();
        node.RefreshPorts();

        EntryNode = node;

        return(node);
    }