void OnGUI()
    {
        GUILayout.BeginHorizontal();
        _eNameChangeType = (ENameChangeType)EditorGUILayout.EnumPopup("Name Change Type", _eNameChangeType);
        GUILayout.EndHorizontal();

        switch (_eNameChangeType)
        {
        case ENameChangeType.New:
            ProcSettingView_New();
            break;

        case ENameChangeType.Replace:
            ProcSettingView_Replace();
            break;

        case ENameChangeType.Append:
            ProcSettingView_Append();
            break;

        case ENameChangeType.Insert:
            ProcSettingView_Insert();
            break;
        }

        GUILayout.Space(20f);
        if (GUILayout.Button("Change Name!"))
        {
            GameObject[] arrObject = Selection.gameObjects;
            _listGameObject.Clear();
            _listGameObject.AddRange(arrObject);
            _listGameObject.Sort(Comparer_GameObject);

            Object[] arrFile = Selection.objects;
            _listObject.Clear();
            _listObject.AddRange(arrFile);
            _listObject.Sort(Comparer_Object);

            switch (_eNameChangeType)
            {
            case ENameChangeType.New:
                ProcNameChange_New();
                break;

            case ENameChangeType.Replace:
                ProcNameChange_Replace();
                break;

            case ENameChangeType.Append:
                ProcNameChange_Append();
                break;

            case ENameChangeType.Insert:
                ProcNameChange_Insert();
                break;
            }
        }

        GUILayout.Space(20f);
    }
    void OnGUI()
    {
        GUILayout.BeginHorizontal();
        _eNameChangeType = (ENameChangeType)EditorGUILayout.EnumPopup("Name Change Type", _eNameChangeType);
        GUILayout.EndHorizontal();

        switch (_eNameChangeType)
        {
        case ENameChangeType.New:
            ProcSettingView_New();
            break;

        case ENameChangeType.Replace:
            ProcSettingView_Replace();
            break;

        case ENameChangeType.Append:
            ProcSettingView_Append();
            break;

        case ENameChangeType.Insert:
            ProcSettingView_Insert();
            break;
        }

        GUILayout.BeginHorizontal();
        _bIsChangeChildren = EditorGUILayout.Toggle("IsChangeChildren ? ", _bIsChangeChildren);
        GUILayout.EndHorizontal();

        GUILayout.Space(20f);
        if (GUILayout.Button("Change Name!"))
        {
            GameObject[] arrObject = Selection.gameObjects;
            _listGameObject.Clear();
            _listGameObject.AddRange(arrObject);

            if (_bIsChangeChildren)
            {
                HashSet <GameObject>        setObjectChecked = new HashSet <GameObject>();
                LinkedList <GameObject>     listObject       = new LinkedList <GameObject>(_listGameObject);
                LinkedListNode <GameObject> pNode            = listObject.First;
                while (pNode != null)
                {
                    GameObject pObjectCurrent = pNode.Value;

                    if (setObjectChecked.Contains(pObjectCurrent))
                    {
                        pNode = pNode.Next;
                        continue;
                    }
                    setObjectChecked.Add(pObjectCurrent);

                    Transform pTransCurrent = pObjectCurrent.transform;
                    for (int i = 0; i < pTransCurrent.childCount; i++)
                    {
                        listObject.AddLast(pTransCurrent.GetChild(i).gameObject);
                    }

                    pNode = pNode.Next;
                }

                _listGameObject.Clear();
                _listGameObject.AddRange(listObject);
            }
            _listGameObject.Sort(Comparer_GameObject);

            Object[] arrFile = Selection.objects;
            _listObject.Clear();
            _listObject.AddRange(arrFile);
            _listObject.Sort(Comparer_Object);

            switch (_eNameChangeType)
            {
            case ENameChangeType.New:
                ProcNameChange_New();
                break;

            case ENameChangeType.Replace:
                ProcNameChange_Replace();
                break;

            case ENameChangeType.Append:
                ProcNameChange_Append();
                break;

            case ENameChangeType.Insert:
                ProcNameChange_Insert();
                break;
            }
        }

        GUILayout.Space(20f);
    }