PrincipleGameLanuch.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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 : MonoBehaviour
  9. {
  10. public Button m_CloseBtn;
  11. [SerializeField]
  12. public List<PrincipleInfo> m_PrincipleInfos;
  13. public PlayableDirector m_PlayableDirector;
  14. [LabelText("单个直接播放(在只有一个的情况下使用)")]
  15. public bool singlePlaye;
  16. public bool isWaitOneFrame = true;
  17. private void Start()
  18. {
  19. ResKit.Init();
  20. foreach (var principleInfo in m_PrincipleInfos)
  21. {
  22. if (principleInfo.btn != null)
  23. {
  24. principleInfo.btn.onClick.AddListener(() => OnBtnClick(principleInfo));
  25. }
  26. }
  27. if (singlePlaye)
  28. {
  29. OnBtnClick(m_PrincipleInfos[0]);
  30. }
  31. if (m_CloseBtn != null)
  32. {
  33. m_CloseBtn.onClick.AddListener(() => Application.Quit());
  34. }
  35. }
  36. private void OnBtnClick(PrincipleInfo principleInfo)
  37. {
  38. if (isWaitOneFrame)
  39. {
  40. StartCoroutine(WaitOneFrame(principleInfo));
  41. }
  42. else
  43. {
  44. m_PlayableDirector.playableAsset = principleInfo.playableAsset;
  45. string tmpName = "原理/" + principleInfo.subTitleName;
  46. UIKit.OpenPanel<SubTitlesPanel>(new SubTitlesPanelData() { m_SubTitleName = tmpName });
  47. m_PlayableDirector.Play();
  48. }
  49. }
  50. IEnumerator WaitOneFrame(PrincipleInfo principleInfo)
  51. {
  52. if (m_PlayableDirector != null)
  53. {
  54. // 停止播放
  55. m_PlayableDirector.Pause();
  56. // 重置时间到0
  57. m_PlayableDirector.time = 0f;
  58. // 重新播放
  59. m_PlayableDirector.Play();
  60. }
  61. yield return new WaitForEndOfFrame();
  62. m_PlayableDirector.playableAsset = principleInfo.playableAsset;
  63. string tmpName = "原理/" + principleInfo.subTitleName;
  64. UIKit.OpenPanel<SubTitlesPanel>(new SubTitlesPanelData() { m_SubTitleName = tmpName });
  65. m_PlayableDirector.Play();
  66. }
  67. }
  68. [System.Serializable]
  69. public class PrincipleInfo
  70. {
  71. [LabelText("字幕名称")]
  72. public string subTitleName;
  73. [LabelText("playableClip")]
  74. public PlayableAsset playableAsset;
  75. [LabelText("绑定按钮")]
  76. public Button btn;
  77. }