发布时间:2025-12-10 19:13:36 浏览次数:7
unitywebplayer怎么启用_使用方法Unity|VideoPlayer的使用方法和原理。打开视频后,显示第一帧图片的方法videoPlayer.Play();//开始videoPlayer.Prepare();//播放引擎准备(提高开始播放时的速度)videoPlayer.targetTexture.Release();//重播时,不出现之前结束时的画面videoPlayer.started+=”方法名”//每次播放后立刻启动方法_unityvideoplayer
讲解逻辑为Unity | 基础逻辑_菌菌巧乐兹的博客-CSDN博客
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控制
所以我们先建一个脚本,写一行代码
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博客