Unity:播放本地视频文件(Windows)
这里做的效果,是运行Unity后立刻播放视频了,你如果想要对视频具有更多的控制权,你可以在Start函数中设置Video Player的playOnAwake属性,让其一开始不播放,并添加上Toggle按钮,当你点击Toggle按钮时才播放也可以。"/1.mp4" :这是我自己取的视频文件的名字,你可以根据自己需求取名,记得加上后缀名。需要注意的是,代码中的文件名需要与实际的视频文件名字相同,这样
前几天遇到客户一个需求:项目中有个播放视频的功能,并且可以在自己电脑上替换这个播放的视频文件。
使用到的技术点是Unity中的Video Player(视频播放组件)
在场景中创建一个Video Player(鼠标右键-Create-Video-Video Player),再创建一个RawImage用来显示视频的播放。
创建脚本并挂载到Video Player身上,代码如下:
using UnityEngine;
using UnityEngine.Video;
using UnityEngine.UI;
public class VideoPlayerExample : MonoBehaviour
{
public RawImage rawImage; //用于在UI中显示视频的图像
private VideoPlayer videoPlayer; //视频播放器组件
private string videoPath; //存储视频文件的路径
void Start()
{
videoPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop) + "/1.mp4"; //获取视频文件路径
videoPlayer = gameObject.GetComponent<VideoPlayer>(); //获取VideoPlayer组件
videoPlayer.prepareCompleted += OnVideoPrepared; //注册视频准备完成时执行的回调方法
videoPlayer.errorReceived += OnVideoError; //注册当视频未获取到时执行的回调函数
videoPlayer.source = VideoSource.Url; //设置VideoPlayer组件上的Source模式为Url
videoPlayer.url = videoPath; //将前面获取的视频文件路径赋值给VideoPlayer
videoPlayer.loopPointReached += OnVideoFinished; //注册视频播放结束时执行的回调函数
}
//视频准备完成时执行的回调方法
private void OnVideoPrepared(VideoPlayer source)
{
rawImage.texture = source.texture;
}
//当视频未获取到时执行的回调函数
private void OnVideoError(VideoPlayer source, string message)
{
Debug.LogError("Video error: " + message);
}
//视频播放结束时执行的回调函数
private void OnVideoFinished(VideoPlayer vp)
{
Debug.Log("视频播放完毕!");
// 在这里执行视频播放完毕后的逻辑
}
}
代码解析:
System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop):这是所有Windows电脑桌面的路径,这里想要视频正确播放,需要将视频文件放在桌面上,你也可以改成你指定的文件夹路径,然后将视频文件放在对应文件夹即可。
"/1.mp4" :这是我自己取的视频文件的名字,你可以根据自己需求取名,记得加上后缀名。需要注意的是,代码中的文件名需要与实际的视频文件名字相同,这样才能准确获取到。
挂载脚本后,记得将前面创建RawImage赋值进去。
运行Unity后,就可以看到视频播放了。
附言:
这里做的效果,是运行Unity后立刻播放视频了,你如果想要对视频具有更多的控制权,你可以在Start函数中设置Video Player的playOnAwake属性,让其一开始不播放,并添加上Toggle按钮,当你点击Toggle按钮时才播放也可以。
Toggle按钮注册基本写法:
public Toggle playToggle;
void Start()
{
playToggle.onValueChanged.AddListener((isOn)=> {
OnPlayToggleChanged(isOn);
});
}
private void OnPlayToggleChanged(bool isOn)
{
if (playToggle.isOn)
{
videoPlayer.Play();
}
else
{
videoPlayer.Pause();
}
}
注:想看Unity哪个技术点的,可以评论或者私信,有时间我会更新的。(包用最通俗易懂的方式让你实现)
更多推荐
所有评论(0)