public override void OnBehaviourPlay(Playable playable, FrameData info) { if (eventPlayer) { eventPlayer.Play(); } }
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); }