Unity | Video Player的简单使用方法和原理

本文详细介绍了在Unity中使用VideoPlayer组件播放视频的步骤,包括如何将视频导入游戏界面,创建RenderTexture和RawImage进行显示,以及如何控制视频的播放、暂停和停止。同时,讨论了大小控制和VideoPlayer组件的常用方法,并提供了一个实现在视频第一帧显示后自动暂停的案例。最后,提到了性能优化建议,如按需加载视频和在播放结束后关闭视频,以减少内存占用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 Video Player的使用方法

讲解逻辑为Unity | 基础逻辑_菌菌巧乐兹的博客-CSDN博客

(一)把素材仓库里的视频放进Game界面

1.我们需要在素材仓库中放一个视频(其他文件夹不用管,我只是懒得删了)

2.在Unity里建一个能接收视频的地方VideoPlayer

备注:视频和图片是不一样的,图片到这一步组合一下就能用,但是视频不行。因为Unity里不支持直接播放视频,它只能播放动态的Texture。

3.我们来看一下VideoPlayer身上带的组件

这里因为unity自己也知道,自己没办法直接播放视频,所以它这里让你可以填两个东西,上面是你想播放的视频,下面让你填一个空的texture,之后,它会自己把视频印到Texture上,所以这个组件并不是真的用来播放视频的,而是用来转换的。

4.所以我们需要建一个新的Texture来接收这个视频(在这个界面右键→ Creat→可以找到RenderTexture)

把这个拖到刚才VideoPlayer上应该在的位置

此时此刻,我们就成功把视频印到这个新建的Texture身上了

5.我们需要建一个播放Texture的东西

unity播放Texture的物体叫RawImage

 把你的Texture拖进去

 这样就可以播放视频了

(二)大小控制

因为这个视频是印到Texture身上,所以我们想改视频的大小,就必须改Texture的大小

 因为这个texture是用RawImage播放的,所以我们也需要改rawImage的大小(这步略)

(三)VideoPlayer组件常用部分

二 、Video Player的常用方法

控制视频,我们还是通过VideoPlayer控制

所以我们先建一个脚本,写一行代码

public VideoPlayer videoPlayer;

在外面把这个物体拖进来

 然后就可以简单使用了,下面是常用方法

videoPlayer.Play();  //开始
videoPlayer.Stop();  //停止
videoPlayer.Pause(); //暂停
videoPlayer.Prepare(); // 播放引擎准备(提高开始播放时的速度)
videoPlayer.targetTexture.Release(); //重播时,不出现之前结束时的画面

videoPlayer.started += "方法名"                 //每次播放后立刻启动方法
videoPlayer.loopPointReached += "方法名"        //每次到结尾,都会自己启动这个方法
videoPlayer.time = 5;                           //视频的时间调到第五秒
videoPlayer.frame = 1;                         //视频调到第一帧

//常用案例中细讲
videoPlayer.sendFrameReadyEvents = true;        //启用videoPlayer.frameReady方法
videoPlayer.frameReady += "方法名"               //准备好新的一帧后启动这个方法

 上面有方法名的示例代码:

    videoPlayer.loopPointReached += FalseGameObject;
    void FalseGameObject(VideoPlayer videoPlayer) {
        gameObject.SetActive(false);
    }

方法的括号里必须要带 VideoPlayer哦,后面那个小写的是名字,可以自己起不要紧。

三、常用案例

(一)打开视频后,显示第一帧图片

VideoPlayer中可以选择自动打开并播放视频,和不打开视频。

但是有时候我们有需求,我希望第一帧出现在界面上,用来做封面或者其他。

图例:

你希望再软件里实现这个状态,展示视频图,但是又不播放。

基本逻辑:

1.我们让它自动打开视频(别忘了自己开这一步)

2.当准备好第一帧的时候,它会自动播放第一帧

3.趁他没反应过来,暂停它

    VideoPlayer vp;
    
    void Start()
    {
        //我一般把这个代码直接挂在需要需要使用的VideoPlayer身上,这样可以直接找到组件
        vp = GetComponent<VideoPlayer>();
        
        //frameReady这个方法是需要打开才能用的
        //这个下面这句话就是我把这个方法启用
        vp.sendFrameReadyEvents = true;
        //当准备好新的一帧后,执行下面方法
        vp.frameReady += PauseVideoUnitOnFirstFrame;
    }
    
    public void PauseVideoUnitOnFirstFrame(VideoPlayer player, long frameIdx)
    {
        //暂停播放
        player.Pause();
        //关掉这个方法,要不然它准备好第二帧又执行,没完没了了
        player.sendFrameReadyEvents = false;
        //同时也去掉这个方法
        player.frameReady -= PauseVideoUnitOnFirstFrame;
    }

四、相关内容

Unity | 如何使用webm透明视频_菌菌巧乐兹的博客-CSDN博客

 五、关于性能优化

1.播放方式优化

正常拿电脑播放视频有两种方式:

假如我有10个视频

1.我开机以后,把10个视频都打开,也不关,就一直都开着,用哪个就播放哪个。

优点:点击播放不会缓存(不会卡),因为都是提前加载好的

缺点:你一两个视频,哪怕三四个视频都还好,你要是十几二十几个视频一起开,电脑就卡死了,所以非常浪费性能。

2.我把10个视频都准备好,但我不打开,我需要哪个再打开哪个。

优点:不浪费性能,哪怕你准备100个视频

缺点:你每次打开了才缓存,所以可能会卡

推荐用第二个。

2.代码注意事项

视频播放完,或者你用了暂停的方法,视频本质上都还是开着的,只是不播放了而已。

所以记得视频播放完以后用stop()方法,把视频关掉,降低内存占用!!!!

Unity中的VideoPlayer组件可用于在游戏中播放视频。要使用VideoPlayer组件,您需要按照以下步骤进行操作: 1. 在Unity编辑器中,创建一个新的GameObject或选择现有的GameObject。 2. 在Inspector面板中,点击“Add Component”按钮并搜索“VideoPlayer”,然后将其添加到GameObject上。 接下来,您可以进行以下设置: 1. 在VideoPlayer组件的Inspector面板中,找到“Source”属性,并选择您要播放的视频文件。您可以通过单击下拉菜单旁边的圆圈按钮并选择文件路径,或通过拖放文件到相应字段来选择视频文件。 2. 配置视频的播放设置: - 您可以选择在播放视频之前自动加载视频文件。启用“Preload”选项将在游戏开始时加载视频文件,以确保平滑播放。 - 您还可以选择在开始播放视频时是否将其设置为循环播放。启用“Loop”选项将使视频循环播放。 3. 根据需要配置其他设置: - 您可以设置视频的音量播放速度。 - 您可以选择视频的渲染目标。默认情况下,视频将在全屏幕上播放。您还可以将其指定为RawImage组件,以便在指定的UI元素中播放视频。 - 您可以选择在视频准备就绪时自动播放视频。 一旦您完成了设置,您可以通过编写脚本来控制VideoPlayer组件的播放。例如,您可以使用PlayPause方法来控制视频的播放暂停。 这只是一个简单的介绍,UnityVideoPlayer组件还有许多其他功能选项可供探索。您可以参考Unity的官方文档或在线教程来深入了解如何使用UnityVideoPlayer组件。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菌菌巧乐兹

希望能给大家写更多有用的文章~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值