public override void OnXGUI()
        {
            targetComponent = ( Component )CreateObjectField( "target", targetComponent, typeof( Component ) );
            if( null == targetComponent )
            {
                CreateMessageField( "Drag a Component.", MessageType.None );
            }
            else
            {

                if( CreateSpaceButton( "Clean" ) )
                {
                    isDirty = true;
                }
                if( isDirty )
                {
                    isDirty = false;
                    mProperties.Clear();
                    targetProperty = null;
                    // targetComponent.GetType().
                    foreach( var item in targetComponent.GetType().GetFields() )
                    {
                        if( targetComponent.GetType() == item.DeclaringType && !item.IsNotSerialized )
                        {
                            mProperties.Add( item );
                        }
                    }
                }

                for( int pos = 0; pos < mProperties.Count; pos++ )
                {
                    if( CreateSpaceButton( mProperties[pos].Name ) )
                    {
                        targetProperty = mProperties[pos];
                        mProperties.Clear();
                    }
                }

                if( null != targetProperty )
                {
                    if( CreateSpaceButton( targetProperty.Name ) )
                    {
                        isDirty = true;
                    }
            #if TINYTIME
                if(targetProperty.FieldType == typeof(System.Collections.Generic.List<TutorialModel>) ){
                    List<TutorialModel>list = (List<TutorialModel>)targetProperty.GetValue(targetComponent);
                    for( int pos = 0; pos < list.Count; pos++ ){
                        BeginHorizontal();
                        CreateStringField(pos.ToString(), list[pos].title);
                        if(CreateSpaceButton("Insert")){
                            list.Insert(pos,new TutorialModel());
                        }
                        if(CreateSpaceButton("Delete")){
                            list.RemoveAt(pos);
                        }
                        EndHorizontal();
                    }

                    if( 0 < list.Count && CreateSpaceButton("Export")){
                        string path = XFileExtension.CreateFileWithFormat("File","xml");
                        GetElements(list, path);
                    }
                }

                if(targetProperty.FieldType == typeof(System.Collections.Generic.List<TextModelItem>) && null != targetComponent){
                    List<TextModelItem>list = (List<TextModelItem>)targetProperty.GetValue(targetComponent);
                    if(Selection.gameObjects.Length > 0){
                        GameObject[] arrays = Selection.gameObjects;
                        List<TextModel> model = new List<TextModel>();
                        for( int pos = 0; pos < arrays.Length; pos++ ){
                            TextModel item = arrays[pos].transform.GetComponent<TextModel>();
                            if( null != item ){
                                model.Add(item);
                            }
                        }
                        if(model.Count > 0){
                            if(CreateSpaceButton("Add TextModel")){

                                for(int pos = 0; pos < model.Count; pos++){
                                    bool isExist = false;
                                    for(int listLoop = 0; listLoop < list.Count; listLoop++ ){
                                        if(list[listLoop].modelText.Equals(model[pos].GetComponent<TMPro.TextMeshProUGUI>())){
                                            isExist = true;
                                            list[listLoop].xmlCmd = model[pos].xmlCmd;
                                        }
                                    }
                                    if(!isExist){
                                        TextModelItem modelitem = new TextModelItem();
                                        modelitem.modelText = model[pos].GetComponent<TMPro.TextMeshProUGUI>();
                                        modelitem.xmlCmd = model[pos].xmlCmd;
                                        list.Add(modelitem);
                                    }
                                    Undo.DestroyObjectImmediate(model[pos]);
                                    GameObject.DestroyImmediate(model[pos]);
                                }
                            }
                        }else{
                            CreateMessageField("Selected TextMeshProUGUI Components", MessageType.None);
                        }
                    }
                }
            #endif
                }
            }
        }
        public override void OnXGUI()
        {
            targetComponent = ( Component )CreateObjectField("target", targetComponent, typeof(Component));
            if (null == targetComponent)
            {
                CreateMessageField("Drag a Component.", MessageType.None);
            }
            else
            {
                if (CreateSpaceButton("Clean"))
                {
                    isDirty = true;
                }
                if (isDirty)
                {
                    isDirty = false;
                    mProperties.Clear();
                    targetProperty = null;
                    // targetComponent.GetType().
                    foreach (var item in targetComponent.GetType().GetFields())
                    {
                        if (targetComponent.GetType() == item.DeclaringType && !item.IsNotSerialized)
                        {
                            mProperties.Add(item);
                        }
                    }
                }

                for (int pos = 0; pos < mProperties.Count; pos++)
                {
                    if (CreateSpaceButton(mProperties[pos].Name))
                    {
                        targetProperty = mProperties[pos];
                        mProperties.Clear();
                    }
                }

                if (null != targetProperty)
                {
                    if (CreateSpaceButton(targetProperty.Name))
                    {
                        isDirty = true;
                    }
#if TINYTIME
                    if (targetProperty.FieldType == typeof(System.Collections.Generic.List <TutorialModel>))
                    {
                        List <TutorialModel> list = (List <TutorialModel>)targetProperty.GetValue(targetComponent);
                        for (int pos = 0; pos < list.Count; pos++)
                        {
                            BeginHorizontal();
                            CreateStringField(pos.ToString(), list[pos].title);
                            if (CreateSpaceButton("Insert"))
                            {
                                list.Insert(pos, new TutorialModel());
                            }
                            if (CreateSpaceButton("Delete"))
                            {
                                list.RemoveAt(pos);
                            }
                            EndHorizontal();
                        }

                        if (0 < list.Count && CreateSpaceButton("Export"))
                        {
                            string path = XFileExtension.CreateFileWithFormat("File", "xml");
                            GetElements(list, path);
                        }
                    }

                    if (targetProperty.FieldType == typeof(System.Collections.Generic.List <TextModelItem>) && null != targetComponent)
                    {
                        List <TextModelItem> list = (List <TextModelItem>)targetProperty.GetValue(targetComponent);
                        if (Selection.gameObjects.Length > 0)
                        {
                            GameObject[]     arrays = Selection.gameObjects;
                            List <TextModel> model  = new List <TextModel>();
                            for (int pos = 0; pos < arrays.Length; pos++)
                            {
                                TextModel item = arrays[pos].transform.GetComponent <TextModel>();
                                if (null != item)
                                {
                                    model.Add(item);
                                }
                            }
                            if (model.Count > 0)
                            {
                                if (CreateSpaceButton("Add TextModel"))
                                {
                                    for (int pos = 0; pos < model.Count; pos++)
                                    {
                                        bool isExist = false;
                                        for (int listLoop = 0; listLoop < list.Count; listLoop++)
                                        {
                                            if (list[listLoop].modelText.Equals(model[pos].GetComponent <TMPro.TextMeshProUGUI>()))
                                            {
                                                isExist = true;
                                                list[listLoop].xmlCmd = model[pos].xmlCmd;
                                            }
                                        }
                                        if (!isExist)
                                        {
                                            TextModelItem modelitem = new TextModelItem();
                                            modelitem.modelText = model[pos].GetComponent <TMPro.TextMeshProUGUI>();
                                            modelitem.xmlCmd    = model[pos].xmlCmd;
                                            list.Add(modelitem);
                                        }
                                        Undo.DestroyObjectImmediate(model[pos]);
                                        GameObject.DestroyImmediate(model[pos]);
                                    }
                                }
                            }
                            else
                            {
                                CreateMessageField("Selected TextMeshProUGUI Components", MessageType.None);
                            }
                        }
                    }
#endif
                }
            }
        }