Unity的VideoPlayer视频播放结束触发逻辑

Unity的VideoPlayer视频播放结束触发逻辑

前言

我在之前的项目中,有许多项目用到了VideoPlayer视频播放组件,其中有很多需求都是视频播放结束后调用一个方法,比如说跳转场景、转换视频等等。我使用的Unity2017的版本都是在Update检测视频的帧数,在视频播放结束是触发方法,但是这种方法貌似在2017以上的版本就不太好使了(我在很多项目中碰到过这种情况),有时候只能用计时器完成,费时费力。今天我在网上找到一个方法,终于解决了这个问题,完成过程如下所示:

步骤

1.项目中导入之前videoPlayer项目,videoPlayer的使用方法我在之前的博客里介绍过,在这里不赘述了,如下图所示:
在这里插入图片描述2.之前的项目中视频播放结束逻辑都在PlayMovie方法里,代码如下所示:

void PlayMovie()
        {
    
    
            //如果videoPlayer没有对应的视频texture,则返回
            if (videoPlayer.texture == null)
            {
    
    
                return;
            }
            //把VideoPlay的视频渲染到UGUI的RawImage上
            rawImage.texture = videoPlayer.texture;
            if (isPlay)
            {
    
    
                if ( videoPlayer.frame == (long)videoPlayer.frameCount)
                {
    
    
                    //Debug.Log("视频播放完毕动作!");
                    //StopPlay();
                }
            }
        }

3.优化后播放结束逻辑不在PlayMovie方法里实现,新建ToEndVideo方法,如下所示:

        void ToEndVideo()
        {
    
    
            videoPlayer.loopPointReached += EndWithVideoPlay;
        }

        /// <summary>
        /// 播放结束逻辑
        /// </summary>
        /// <param name="thisPlay"></param>
        void EndWithVideoPlay(VideoPlayer thisPlay)
        {
    
    
            Debug.Log("视频播放完毕动作!");
            StopPlay();
        }

4.在Start方法中调用ToEndVideo方法,如下图所示:

        void Start()
        {
    
    
            BeginString();
            ToEndVideo();
        }

5.功能完成,测试,发现已经实现了该功能!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_17367039/article/details/129903114