UICGView.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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 RawImage imgVideo;
  15. private Button btnFullScreen;
  16. private VideoPlayer videoPlayer;
  17. public void Show()
  18. {
  19. string path = ResPathUtil.GetUUIPrefabPath("UICG");
  20. handle = YooAssets.LoadAssetSync<GameObject>(path);
  21. _ui = handle.InstantiateSync(UGUIManager.Instance.desktop.transform);
  22. imgVideo = _ui.transform.Find("ImgVideo").GetComponent<RawImage>();
  23. Vector2 imgVideoSizeDelta = imgVideo.rectTransform.sizeDelta;
  24. imgVideoSizeDelta.x = Screen.width;
  25. imgVideoSizeDelta.y = (VideoHeight / VideoWidth) * imgVideoSizeDelta.x;
  26. imgVideo.rectTransform.sizeDelta = imgVideoSizeDelta;
  27. btnFullScreen = _ui.transform.Find("BtnFullScreen").GetComponent<Button>();
  28. RectTransform rectTransform = btnFullScreen.GetComponent<RectTransform>();
  29. Vector2 buttonSizeDelta = rectTransform.sizeDelta;
  30. Vector2 anchoredPosition = rectTransform.anchoredPosition;
  31. anchoredPosition.y = -imgVideoSizeDelta.y / 2 - buttonSizeDelta.y;
  32. rectTransform.anchoredPosition = anchoredPosition;
  33. btnFullScreen.onClick.AddListener(OnClickBtnFullScreen);
  34. videoPlayer = _ui.transform.Find("VideoPlayer").GetComponent<VideoPlayer>();
  35. videoPlayer.loopPointReached += OnVideoEnded;
  36. }
  37. private void OnVideoEnded(VideoPlayer source)
  38. {
  39. this.Hide();
  40. StoryController.ShowLevelView(100001001);
  41. }
  42. private void OnClickBtnFullScreen()
  43. {
  44. btnFullScreen.gameObject.SetActive(false);
  45. imgVideo.rectTransform.localRotation = Quaternion.Euler(0, 0, -90);
  46. Vector2 imgVideoSizeDelta = imgVideo.rectTransform.sizeDelta;
  47. imgVideoSizeDelta.y = Screen.width;
  48. imgVideoSizeDelta.x = (VideoWidth / VideoHeight) * imgVideoSizeDelta.y;
  49. imgVideo.rectTransform.sizeDelta = imgVideoSizeDelta;
  50. if(videoPlayer.time <= 3)
  51. {
  52. videoPlayer.Stop();
  53. videoPlayer.Play();
  54. }
  55. }
  56. public void Hide()
  57. {
  58. handle.Release();
  59. handle = null;
  60. GameObject.Destroy(_ui);
  61. _ui = null;
  62. }
  63. }
  64. }