| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.EventSystems;
- using UnityEngine.UI;
- using UnityEngine.Video;
- using LuaInterface;
- [RequireComponent(typeof(RawImage))]
- [RequireComponent(typeof(VideoPlayer))]
- public class UIPlayVideo : UIBehaviour
- {
- private RawImage m_RawImage;
- private VideoPlayer m_VideoPlayer;
- private LuaTable m_Owner;
- private LuaFunction m_OwnerCB;
- protected override void Awake() {
- m_RawImage = GetComponent<RawImage>();
- m_VideoPlayer = GetComponent<VideoPlayer>();
- }
- protected override void OnEnable() {
- m_VideoPlayer.started += OnStarted;
- m_VideoPlayer.errorReceived += OnErrorReceived;
- m_VideoPlayer.loopPointReached += OnLoopPointReached;
- m_RawImage.texture = null;
- }
- protected override void OnDisable() {
- m_VideoPlayer.started -= OnStarted;
- m_VideoPlayer.errorReceived -= OnErrorReceived;
- m_VideoPlayer.loopPointReached -= OnLoopPointReached;
- m_RawImage.texture = null;
- }
- protected override void OnRectTransformDimensionsChange()
- {
- base.OnRectTransformDimensionsChange();
- if (!IsActive()) return;
- if (m_RawImage && m_RawImage.texture)
- {
- ResetSize();
- }
- }
- private void ResetSize()
- {
- RectTransform parent = (RectTransform)(transform.parent);
- if (parent)
- {
- Vector2 size = parent.rect.size;
- int textureW = m_RawImage.texture.width;
- int textureH = m_RawImage.texture.height;
- float scaleW = size.x / textureW;
- float scaleH = size.y / textureH;
- if (scaleW < scaleH)
- {
- size.y = scaleW * textureH;
- }
- else if (scaleW > scaleH)
- {
- size.x = scaleH * textureW;
- }
- RectTransform rectTransform = (RectTransform)transform;
- rectTransform.sizeDelta = size;
- }
- }
- private void OnStarted(VideoPlayer source)
- {
- if (m_VideoPlayer.texture != null)
- {
- m_RawImage.texture = m_VideoPlayer.texture;
- ResetSize();
- }
- }
- private void OnErrorReceived(VideoPlayer source, string message)
- {
- Debug.LogError(message);
- Complete(1);
- }
- private void OnLoopPointReached(VideoPlayer source)
- {
- Complete(0);
- }
- private void Complete(int errorCode)
- {
- if (m_OwnerCB != null)
- {
- if (m_Owner != null)
- {
- m_OwnerCB.Call(m_Owner, errorCode);
- }
- else
- {
- m_OwnerCB.Call(errorCode);
- }
- }
- }
- public void BindLuaCallBack(LuaTable owner, LuaFunction ownerCB)
- {
- m_Owner = owner;
- m_OwnerCB = ownerCB;
- }
- public void Play(string path)
- {
- m_VideoPlayer.url = path;
- m_VideoPlayer.Stop();
- m_VideoPlayer.Play();
- }
- }
|