YanCheng_Metrology/Assets/Scripts/Wwz/OfficeScene/OfficeTimelineControl.cs

69 lines
2.0 KiB
C#

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<PlayableDirector>();
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<UI_MaskPanel>(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<UI_TaskListPanel>(E_UI_Layer.Bot, (panel) =>
{
panel.Init(GameManager.RunModelMgr.deviceId);
});
}
GameManager.UIMgr.ShowPanel<UI_MenuBar>(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;
}
}