private void Save()
        {
            // 新建的FSMAsset,还未保存
            if (!currentFSMAsset)
            {
                currentFSMAsset = CreateInstance <FSMData>();
                var path = OpenSavePanel();
                AssetDatabase.CreateAsset(currentFSMAsset, path);
                AssetDatabase.Refresh();
            }

            currentFSMAsset.NodeDatas = new List <FSMStateNodeData>();
            currentFSMAsset.PortDatas = new List <FSMPortData>();
            graphView.nodes.ForEach(tempNode =>
            {
                FSMStateNode node         = tempNode as FSMStateNode;
                var fsmStateNodeData      = new FSMStateNodeData();
                fsmStateNodeData.GUID     = node.viewDataKey;
                fsmStateNodeData.Position = node.GetPosition().position;

                int portIndex = 0;
                foreach (Port port in node.outputContainer.Children())
                {
                    var portData           = new FSMPortData();
                    var edge               = port.connections.First();
                    portData.FromNodeGUID  = node.viewDataKey;
                    portData.ToNodeGUID    = edge.input.node.viewDataKey;
                    portData.Index         = portIndex;
                    portData.ConditionGUID = node.PortIndexToConditions[portIndex];
                    portIndex++;

                    currentFSMAsset.PortDatas.Add(portData);
                }
                ;

                currentFSMAsset.NodeDatas.Add(fsmStateNodeData);
            });

            EditorUtility.SetDirty(currentFSMAsset);
            AssetDatabase.SaveAssets();
        }