using System; using System.IO; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.UI; using UnityEngine.Video; namespace UnityTest.ZXL { public class TimeReversalUI : UI { [SerializeField] private VideoPlayer _videoPlayer; private Action _action; public override void OnInit() { base.OnInit(); _videoPlayer = GetComponentInChildren(); _videoPlayer.started += Started; _videoPlayer.loopPointReached += End; } private void OnDestroy() { _videoPlayer.started -= Started; _videoPlayer.loopPointReached -= End; } private void Started(VideoPlayer vp) { Debug.Log("播放开始"); // TODO: 关闭所有UI,待播放结束后开启被关闭的UI // UIManager.Instance().HideAllUI(); // UIManager.Instance().ShowUI(UIType.TimeReversal); _videoPlayer.GetComponent().enabled = true; } private void End(VideoPlayer source) { Debug.Log("播放结束"); _action?.Invoke(); } public void SetAction(Action action) { _action = action; _videoPlayer.url = $"{Application.streamingAssetsPath}/TimeReversal.mp4"; _videoPlayer.Play(); _videoPlayer.GetComponent().enabled = false; } #if UNITY_EDITOR [Button] void Test() { _videoPlayer.url = $"{Application.streamingAssetsPath}/TimeReversal.mp4"; _videoPlayer.Play(); } #endif } }