void _duplicate(object node)
    {
        BCDicOfObj.ObjData n = node as BCDicOfObj.ObjData;
        int index            = bo.objList.IndexOf(n);

        BCDicOfObj.ObjData newone = new BCDicOfObj.ObjData()
        {
            Desc = n.Desc,
            obj  = n.obj
        };
        bo.objList.Insert(index, newone);
    }
    public override void OnInspectorGUI()
    {
        if (!string.IsNullOrEmpty(bo.tip))
        {
            EditorGUILayout.LabelField(bo.tip);
        }
        GUILayout.Space(3f);
        EditorGUILayout.BeginHorizontal();
        searchstr = EditorGUILayout.TextField(searchstr);
        if (GUILayout.Button("按名搜"))
        {
            searchList.Clear();
            searchList = bo.FindObjsByName(searchstr);
        }
        if (GUILayout.Button("按描述搜"))
        {
            searchList.Clear();
            searchList = bo.FindObjsByTag(searchstr);
        }
        EditorGUILayout.EndHorizontal();
        BCEditorTools.SetLabelWidth(130f);
        for (int i = 0; i < searchList.Count; i++)
        {
            GUI.color = Color.cyan;
            BCEditorTools.BeginContents();
            GUI.color = Color.white;
            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("-", GUILayout.Width(30)))
            {
                bo.objList.Remove(searchList[i]);
                searchList.RemoveAt(i);
                BCEditorTools.EndContents();
                EditorGUILayout.EndHorizontal();
                return;
            }
            Object obj = EditorGUILayout.ObjectField(searchList[i].obj, typeof(Object));
            EditorGUILayout.EndHorizontal();
            GUILayout.Space(2f);
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("描述:", GUILayout.Width(40f));
            string str = EditorGUILayout.TextField(searchList[i].Desc);
            EditorGUILayout.EndHorizontal();
            GUILayout.Space(1f);
            BCEditorTools.EndContents();
            if (GUI.changed)
            {
                BCEditorTools.RegisterUndo("Tween Change", bo);
                searchList[i].obj  = obj;
                searchList[i].Desc = str;
                BCEditorTools.SetDirty(bo);
            }
        }

        for (int i = 0; i < bo.objList.Count; i++)
        {
            BCEditorTools.BeginContents();
            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("-", GUILayout.Width(30)))
            {
                bo.objList.RemoveAt(i);
                BCEditorTools.EndContents();
                EditorGUILayout.EndHorizontal();
                return;
            }
            Object obj = EditorGUILayout.ObjectField(bo.objList[i].obj, typeof(Object));
            EditorGUILayout.EndHorizontal();
            GUILayout.Space(2f);
            Rect titleRect = EditorGUILayout.BeginHorizontal();
            titleRect.xMax = titleRect.xMin + 40f;
            if (Event.current.isMouse && Event.current.button == 1 && titleRect.Contains(Event.current.mousePosition))
            {
                GenericMenu menu = new GenericMenu();
                menu.AddItem(new GUIContent("Duplicate one"), false, _duplicate, bo.objList[i]);
                if (bo.objList[i].obj != null && bo.objList[i].obj is AudioClip)
                {
                    menu.AddItem(new GUIContent("Play Audio"), false, _PlayAudioClip, bo.objList[i]);
                }
                menu.ShowAsContext();
                Event.current.Use();
            }
            EditorGUILayout.LabelField("描述:", GUILayout.Width(40f));
            string str = EditorGUILayout.TextField(bo.objList[i].Desc);
            EditorGUILayout.EndHorizontal();
            GUILayout.Space(1f);
            BCEditorTools.EndContents();

            if (GUI.changed)
            {
                BCEditorTools.RegisterUndo("Tween Change", bo);
                bo.objList[i].obj  = obj;
                bo.objList[i].Desc = str;
                BCEditorTools.SetDirty(bo);
            }
        }
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("  ", GUILayout.ExpandWidth(true));
        if (GUILayout.Button("+", GUILayout.Width(50)))
        {
            BCDicOfObj.ObjData addMe = new BCDicOfObj.ObjData();
            bo.objList.Add(addMe);
        }
        EditorGUILayout.EndHorizontal();
    }
 void _PlayAudioClip(object node)
 {
     BCDicOfObj.ObjData n = node as BCDicOfObj.ObjData;
     BCEditorTools.PlayClip(n.obj as AudioClip);
 }