UICGView.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using System;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. using UnityEngine.Video;
  5. using YooAsset;
  6. namespace GFGGame
  7. {
  8. public class UICGView : SingletonBase<UICGView>
  9. {
  10. private const float VideoWidth = 1920f;
  11. private const float VideoHeight = 1080f;
  12. private GameObject _ui;
  13. private AssetOperationHandle handle;
  14. private RawFileOperationHandle videoHandle;
  15. private RawImage imgVideo;
  16. private Button btnFullScreen;
  17. private VideoPlayer videoPlayer;
  18. public void Show()
  19. {
  20. string path = ResPathUtil.GetUUIPrefabPath("UICG");
  21. handle = YooAssets.LoadAssetSync<GameObject>(path);
  22. _ui = handle.InstantiateSync(UGUIManager.Instance.desktop.transform);
  23. imgVideo = _ui.transform.Find("ImgVideo").GetComponent<RawImage>();
  24. Vector2 imgVideoSizeDelta = imgVideo.rectTransform.sizeDelta;
  25. imgVideoSizeDelta.x = Screen.width;
  26. imgVideoSizeDelta.y = (VideoHeight / VideoWidth) * imgVideoSizeDelta.x;
  27. imgVideo.rectTransform.sizeDelta = imgVideoSizeDelta;
  28. btnFullScreen = _ui.transform.Find("BtnFullScreen").GetComponent<Button>();
  29. RectTransform rectTransform = btnFullScreen.GetComponent<RectTransform>();
  30. Vector2 buttonSizeDelta = rectTransform.sizeDelta;
  31. Vector2 anchoredPosition = rectTransform.anchoredPosition;
  32. anchoredPosition.y = -imgVideoSizeDelta.y / 2 - buttonSizeDelta.y;
  33. rectTransform.anchoredPosition = anchoredPosition;
  34. btnFullScreen.onClick.AddListener(OnClickBtnFullScreen);
  35. videoPlayer = _ui.transform.Find("VideoPlayer").GetComponent<VideoPlayer>();
  36. videoPlayer.loopPointReached += OnVideoEnded;
  37. string assetPath = ResPathUtil.GetVideoPath("cg");
  38. videoHandle = YooAssets.LoadRawFileSync(assetPath);
  39. videoPlayer.url = videoHandle.GetRawFilePath();
  40. videoPlayer.Play();
  41. }
  42. private void OnVideoEnded(VideoPlayer source)
  43. {
  44. this.Hide();
  45. StoryController.ShowLevelView(100001001);
  46. }
  47. private void OnClickBtnFullScreen()
  48. {
  49. btnFullScreen.gameObject.SetActive(false);
  50. imgVideo.rectTransform.localRotation = Quaternion.Euler(0, 0, -90);
  51. Vector2 imgVideoSizeDelta = imgVideo.rectTransform.sizeDelta;
  52. imgVideoSizeDelta.y = Screen.width;
  53. imgVideoSizeDelta.x = (VideoWidth / VideoHeight) * imgVideoSizeDelta.y;
  54. imgVideo.rectTransform.sizeDelta = imgVideoSizeDelta;
  55. if(videoPlayer.time <= 3)
  56. {
  57. videoPlayer.Stop();
  58. videoPlayer.Play();
  59. }
  60. }
  61. public void Hide()
  62. {
  63. handle.Release();
  64. handle = null;
  65. videoHandle.Release();
  66. videoHandle = null;
  67. GameObject.Destroy(_ui);
  68. _ui = null;
  69. }
  70. }
  71. }