using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Playables; public class OfficeTimelineControl : MonoBehaviour { private PlayableDirector mPlayableDirector; //过场动画所用的玩家模型 private GameObject playerModel; public GameObject playerController; public GameObject aniCamera; // Start is called before the first frame update void Start() { playerController.SetActive(false); mPlayableDirector = GetComponent(); mPlayableDirector.Stop(); mPlayableDirector.stopped += OnPlayableDirectorStopped; playerModel = transform.GetChild(0).gameObject; StartTimeline(); //TODO 这里先掉一下,后续应该流程控制的时候触发调用 //GameManager.EventMgr.AddEventListener(); } public void StartTimeline() { mPlayableDirector.Play(); } private void OnPlayableDirectorStopped(PlayableDirector aDirector) { if (mPlayableDirector == aDirector) { GameManager.UIMgr.ShowPanel(E_UI_Layer.System, (panel) => { panel.Init(); Invoke("DestroyPlayer", 1f); }); } } private void DestroyPlayer() { Destroy(playerModel); Destroy(aniCamera); playerController.SetActive(true); if (GameManager.RunModelMgr.ModeType==E_ModeType.Study) { GameManager.UIMgr.ShowPanel(E_UI_Layer.Bot, (panel) => { panel.Init(GameManager.RunModelMgr.deviceId); }); } GameManager.UIMgr.ShowPanel(E_UI_Layer.Mid, (panel) => { panel.Init(); GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchScene, GameManager.RunModelMgr.SceneType); GameManager.EventMgr.EventTrigger(Enum_EventType.HideMask); }); } void OnDestroy() { mPlayableDirector.stopped -= OnPlayableDirectorStopped; } }