public override void OnInspectorGUI()
    {
        GUILayout.Space(10);

        Undo.RecordObject(referenceCollector, "Changed Settings");
        var dataProperty = serializedObject.FindProperty("data");

        TextAsset obj = null;

        if (!string.IsNullOrEmpty(referenceCollector.scriptGuid))
        {
            obj = AssetDatabase.LoadAssetAtPath <TextAsset>(AssetDatabase.GUIDToAssetPath(referenceCollector.scriptGuid));
        }

        GUILayout.BeginHorizontal();
        var tempTextAsset = EditorGUILayout.ObjectField(obj, typeof(TextAsset), false);

        if (GUILayout.Button("R", GUILayout.Width(40)))
        {
            referenceCollector.FindUIScript();
        }

        GUILayout.EndHorizontal();
        if (tempTextAsset != null)
        {
            string path = AssetDatabase.GetAssetPath(tempTextAsset);
            if (Path.GetExtension(path) != ".cs")
            {
                referenceCollector.scriptGuid = null;
            }
            else
            {
                referenceCollector.scriptGuid = AssetDatabase.AssetPathToGUID(path);
            }
        }

        GUILayout.BeginHorizontal("box");
        // if (GUILayout.Button("添加引用"))
        // {
        //     AddReference(dataProperty, Guid.NewGuid().GetHashCode().ToString(), null);
        // }

        if (GUILayout.Button("全部删除"))
        {
            dataProperty.ClearArray();
        }

        if (GUILayout.Button("删除空引用"))
        {
            DelNullReference();
        }

        if (GUILayout.Button("排序"))
        {
            Sort();
        }

        // if (GUILayout.Button("生成字段"))
        // {
        //     GenFields();
        // }
        //
        // if (GUILayout.Button("生成取值"))
        // {
        //     GenGetCodes();
        // }

        if (GUILayout.Button("重置Key为名称"))
        {
            ReNameAll();
        }

        if (GUILayout.Button("●"))
        {
            GenPartialCodes();
        }

        EditorGUILayout.EndHorizontal();

        reorderableList.DoLayoutList();

        var eventType = Event.current.type;

        if (eventType == EventType.DragUpdated || eventType == EventType.DragPerform)
        {
            // Show a copy icon on the drag
            DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
            if (eventType == EventType.DragPerform)
            {
                DragAndDrop.AcceptDrag();
                foreach (var o in DragAndDrop.objectReferences)
                {
                    AddReference(dataProperty, o.name, o);
                }
            }

            Event.current.Use();
        }

        serializedObject.ApplyModifiedProperties();
        serializedObject.UpdateIfRequiredOrScript();

        //Debug.Log(GUILayoutUtility.GetLastRect());
    }