关于unity VideoPlay 组件
新学unity入门一个月,苦于国内unity的学习环境实在不怎么样,学起来贼辛苦,有很多东西还是要到外边去搜集,所以把一些常用的部分的知识整理起来,一来形成自己的知识库,另一方面或许可以帮到同样苦逼的新手。
1.引用video play组件时…
using UnityEngine.Video;
否则组件名称无法获取,新手常常犯这种低级错误
2.判断视频播放是否结束:
public double time;
public double currentTime;
private bool videoplay = true;
private void Awake()
{
//获取影片的时长
time = Video.GetComponent<VideoPlayer>().clip.length;
}
void Update()
{
currentTime += Time.deltaTime;
if (currentTime>=time)
{
videoplay = false;
}
}
这个代码块来自unity论坛,自己有一点改动
适用场合:影片播放完成后触发事件,影片播放完成后关闭组件,影片播放完后退出等等需要判断影片是否播放完的情况。
3.Video Play 组件的使用(在Canvas组件中播放)
需要以下代码为VideoPlay设定播放目标载体
public class streamVideo : MonoBehaviour
{
//设定三个物件————rawimage\VideoPlayer\AudioSource,其中VideoPlayer挂载控制播放的VideoPlayer,rawimage挂载显示视频的对象(可以更换为其他物件)
public RawImage rawimage;
public VideoPlayer videoplayer;
public AudioSource audiosource;
void Start()
{
//开始播放视频
StartCoroutine (PlayVideo());
}
IEnumerator PlayVideo()
{
//videoplay自带代码包,加载目标视频
videoplayer.Prepare();
WaitForSeconds waitForSeconds = new WaitForSeconds(1);
while(!videoplayer.isPrepared)
{
yield return waitForSeconds;
break;
}
//将videoplayer的视频赋予为目标对象的材质(平面是平面播放,球体是球形播放....)
rawimage.texture = videoplayer.texture;
//开始播放视频和音效
videoplayer.Play();
audiosource.Play();
}
}
4.组件变量详解
Video Clip: 指定影片来源
Play On Awake:是否在该物件被加载的时候播放
Wait For First Frame:一般保持默认打勾
PlayBack Speed:设定视频播放速度
Loop:是否循环播放
更多可以查看官方手册:
https://docs.unity3d.com/Manual/class-VideoPlayer.html
5.是否可以播放透明视频?
可以,需要导出mov格式,保留透明通道
6.暂停和播放代码
videoplayer.Pause();
videoplayer.Play();
videoplayer需要在前面getComponent,这里不赘述