Unity视频播放
相信大家在平时的游戏开发中,会遇到视频播放的问题。
这次在一个剧情冒险的游戏开发过程中,我用了两种解决方法:
第一种适用于ui层播放
第二种适用于游戏物体播放,用摄像机对准就好啦
1.利用UGUI的RawImage
我们在ui下创建rawimage,在右侧面板中加入video PLayer组件,将你导入的视频改为video clip类型,拖入rawimage的clip中,再给物体挂一个audioSource,将audiosource组件拖入videoPlayer的音轨中。
然后我们再挂一个脚本,让videoplayer的每帧贴图都赋给rawimage的贴图。
代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
public class audioPlay : MonoBehaviour {
private VideoPlayer videoPlayer;
private RawImage rawImage;
// Use this for initialization
void Start()
{
//获取场景中对应的组件
videoPlayer = this.GetComponent<VideoPlayer>();
rawImage = this.GetComponent<RawImage>();
Invoke("colorChange", 1.5f);
Invoke("videoChange", 1f);
}
// Update is called once per frame
void Update()
{
//如果videoPlayer没有对应的视频texture,则返回
if (videoPlayer.texture == null)
{
return;
}
else
{
rawImage.texture = videoPlayer.texture;
}
//把VideoPlayerd的视频渲染到UGUI的RawImage
}
void colorChange()
{
rawImage.color = Color.white;
}
void videoChange()
{
videoPlayer.Play();
}
}
使用这个方法,在加载视频的时候,videoplayer在播放的时候,视频还没开始渲染,所以一开始会有显示背景色的现象。
我暂时没有办法在其他方面解决这个问题。
只能在视频本身上下功夫,我一般会加一个纯色渐变片头,多建一个rawimage颜色和片头一样,这样视频开始播放前就不会显示别的背景啦。
2.利用movieTexture
这种方法就是新建物体,将纹理改为视频纹理就好啦。