65 lines
1.9 KiB
C#
65 lines
1.9 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();
|
|
GameManager.EventMgr.EventTrigger(Enum_EventType.HideMask);
|
|
});
|
|
Invoke(nameof(DestroyPlayer), 1f);
|
|
}
|
|
}
|
|
|
|
private void DestroyPlayer()
|
|
{
|
|
Destroy(playerModel);
|
|
Destroy(aniCamera);
|
|
playerController.SetActive(true);
|
|
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);
|
|
});
|
|
}
|
|
|
|
void OnDestroy()
|
|
{
|
|
mPlayableDirector.stopped -= OnPlayableDirectorStopped;
|
|
}
|
|
} |