using System.Collections; using System.Collections.Generic; using UnityEngine; using QFramework; using UnityEngine.Playables; using Sirenix.OdinInspector; using UnityEngine.UI; public class PrincipleGameLanuch_ExtraDirector : MonoBehaviour { public Button m_CloseBtn; public List m_PrincipleInfos; public PlayableDirector LastPlayableDirector; [LabelText("单个直接播放(在只有一个的情况下使用)")] public bool singlePlaye; private void Start() { ResKit.Init(); foreach (var principleInfo in m_PrincipleInfos) { if (principleInfo.btn != null) { principleInfo.btn.onClick.AddListener(() => OnBtnClick(principleInfo)); } } if (singlePlaye) { OnBtnClick(m_PrincipleInfos[0]); } if (m_CloseBtn != null) { m_CloseBtn.onClick.AddListener(() => Application.Quit()); } } private void OnBtnClick(PrincipleInfo_Extra principleInfo) { StartCoroutine(WaitOneFrame(principleInfo)); } IEnumerator WaitOneFrame(PrincipleInfo_Extra principleInfo) { if (LastPlayableDirector != null) { // 停止播放 LastPlayableDirector.Pause(); // 重置时间到0 LastPlayableDirector.time = 0f; // 重新播放 LastPlayableDirector.Play(); } yield return new WaitForEndOfFrame(); LastPlayableDirector.Stop(); string tmpName = "原理/" + principleInfo.subTitleName; UIKit.OpenPanel(new SubTitlesPanelData() { m_SubTitleName = tmpName }); LastPlayableDirector = principleInfo.playableDirector; principleInfo.playableDirector.Play(); } } [System.Serializable] public class PrincipleInfo_Extra { [LabelText("字幕名称")] public string subTitleName; [LabelText("绑定按钮")] public Button btn; [LabelText("Director")] public PlayableDirector playableDirector; }