PrincipleGameLanuch_ExtraDirector.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using QFramework;
  5. using UnityEngine.Playables;
  6. using Sirenix.OdinInspector;
  7. using UnityEngine.UI;
  8. public class PrincipleGameLanuch_ExtraDirector : MonoBehaviour
  9. {
  10. public Button m_CloseBtn;
  11. public List<PrincipleInfo_Extra> m_PrincipleInfos;
  12. public PlayableDirector LastPlayableDirector;
  13. [LabelText("单个直接播放(在只有一个的情况下使用)")]
  14. public bool singlePlaye;
  15. private void Start()
  16. {
  17. ResKit.Init();
  18. foreach (var principleInfo in m_PrincipleInfos)
  19. {
  20. if (principleInfo.btn != null)
  21. {
  22. principleInfo.btn.onClick.AddListener(() => OnBtnClick(principleInfo));
  23. }
  24. }
  25. if (singlePlaye)
  26. {
  27. OnBtnClick(m_PrincipleInfos[0]);
  28. }
  29. if (m_CloseBtn != null)
  30. {
  31. m_CloseBtn.onClick.AddListener(() => Application.Quit());
  32. }
  33. }
  34. private void OnBtnClick(PrincipleInfo_Extra principleInfo)
  35. {
  36. StartCoroutine(WaitOneFrame(principleInfo));
  37. }
  38. IEnumerator WaitOneFrame(PrincipleInfo_Extra principleInfo)
  39. {
  40. if (LastPlayableDirector != null)
  41. {
  42. // 停止播放
  43. LastPlayableDirector.Pause();
  44. // 重置时间到0
  45. LastPlayableDirector.time = 0f;
  46. // 重新播放
  47. LastPlayableDirector.Play();
  48. }
  49. yield return new WaitForEndOfFrame();
  50. LastPlayableDirector.Stop();
  51. string tmpName = "原理/" + principleInfo.subTitleName;
  52. UIKit.OpenPanel<SubTitlesPanel>(new SubTitlesPanelData() { m_SubTitleName = tmpName });
  53. LastPlayableDirector = principleInfo.playableDirector;
  54. principleInfo.playableDirector.Play();
  55. }
  56. }
  57. [System.Serializable]
  58. public class PrincipleInfo_Extra
  59. {
  60. [LabelText("字幕名称")]
  61. public string subTitleName;
  62. [LabelText("绑定按钮")]
  63. public Button btn;
  64. [LabelText("Director")]
  65. public PlayableDirector playableDirector;
  66. }