private static void HierarchyWindowItemOnGUI(int instanceID, Rect selectionRect)
        {
            GameObject go = EditorUtility.InstanceIDToObject(instanceID) as GameObject;

            if (!go)
            {
                return;
            }

            EditorDrawerTool.RecordGUIColors();

            DrawEventPlayer(selectionRect, go);

            EditorDrawerTool.ResetGUIColors();
        }
        private static void DrawEventPlayer(Rect selectionRect, GameObject go)
        {
            EventPlayer ep = go.GetComponent <EventPlayer>();

            if (!ep)
            {
                return;
            }


            //左键 + Alt 切换IsActive.
            if (EditorDrawerTool.CheckSelect(ref isMouse0Down, selectionRect, 0, () => Event.current.alt))
            {
                //只切换Hierarchy当前选中的单个物体
                ep.IsActive = !ep.IsActive;

                ////切换所有选中的物体
                //foreach (GameObject go in Selection.gameObjects)
                //{
                //    EventPlayer epTemp = go.GetComponent<EventPlayer>();
                //    if (epTemp)
                //        epTemp.IsActive = !epTemp.IsActive;
                //}
            }

            //中键调用TogglePlay函数
            if (EditorDrawerTool.CheckSelect(ref isMouse0Down, selectionRect, 2))
            {
                ep.TogglePlay();
            }


            //Check Active State
            bool isEPActive    = ep.IsActive;
            bool isGroupActive = true;

            //基于组的激活状态
            EventPlayerGroup epg = ep.transform.FindFirstComponentInParent <EventPlayerGroup>(false);

            if (epg)                                                                                            //进一步的筛选
            {
                bool isManager = epg.IsRecursive || (!epg.IsRecursive && epg.transform == ep.transform.parent); //所获得的EPG是否为该EP的管理员
                if (isManager)
                {
                    if (epg.IsActive)
                    {
                        if (!epg.IsIncludeHide && !ep.gameObject.activeInHierarchy)
                        {
                            isGroupActive = false;
                        }
                    }
                    else
                    {
                        isGroupActive = false;
                    }
                }
            }

            Color colorBGActive   = isGroupActive ? colorSelfActive : colorGroupActive;
            Color colorBGDeActive = isGroupActive ? colorSelfDeActive : colorGroupDeActive;

            GUI.backgroundColor = isEPActive ? colorBGActive : colorBGDeActive;//Toggle 背景颜色代表是否已激活

            Rect boxRect = EditorDrawerTool.GetRectAlignOnRight(selectionRect, EditorDrawerTool.toggleSize);
            //Toggle的Tick 代表是否已经Play
            bool isPlay = GUI.Toggle(boxRect, ep.IsPlayed, default(Texture));

            if (isPlay != ep.IsPlayed)
            {
                ep.Play(isPlay);
            }


            DrawLabel(ep, boxRect);
        }