视频
在制作游戏时,播放视频这一功能有很广泛的应用,例如播放过场动画,游戏加载界面的背景等,本问总结了LayaAir引擎中可以用于播放视频的一些方法,供开发者参考。
一、视频节点
Section titled “一、视频节点”开发者可以在场景中添加视频节点,用于播放视频。程序运行时视频节点不会自动播放,需要开发者使用代码控制。有关视频节点的具体使用方法,可以参考视频节点。

二、Dom元素video
Section titled “二、Dom元素video”开发者也可以使用Dom元素来播放视频,具体的使用方法 LayaAir和原生Dom这篇文档中的LayaAir之Dom元素video小节已有详细的讲解,这里不再重复。

三、视频纹理
Section titled “三、视频纹理”如果开发者希望在3D场景中播放视频,可以使用视频纹理。视频纹理需要通过代码来使用。
下面这段代码提供了一个简单的示例,演示了如何使用视频纹理:
const { regClass, property } = Laya;
/** * 使用视频纹理 */@regClass()export class Script extends Laya.Script { declare owner: Laya.Sprite3D;
@property(Laya.Scene3D) private scene: Laya.Scene3D;
private videoPlane: Laya.Sprite3D; private videoTexture = new Laya.VideoTexture();
onAwake(): void { //获取场景中要添加视频纹理的3D节点 this.videoPlane = this.scene.getChildByName("Plane") as Laya.Sprite3D; //使用指定路径的视频文件 this.createVideo("resources/mov_bbb.mp4"); }
//创建视频纹理并将其应用到Sprite3D上 private createVideo(url: string): void {
//设置纹理的路径 this.videoTexture.source = url; //开始播放视频 this.videoTexture.play(); //设置纹理的播放模式为循环播放 this.videoTexture.loop = true;
//创建一个不受光材质 let mat = new Laya.UnlitMaterial(); //将创建好的视频纹理设置为材质的贴图 mat.albedoTexture = this.videoTexture; //将材质应用到Sprite3D上 this.videoPlane.getComponent(Laya.MeshRenderer).sharedMaterial = mat;
}}效果如图所示:

下面我们来介绍一下videoTexture中常用的属性和方法,开发者也可以在API文档中查看videoTexture的所有属性和方法。
属性:
| 名称 | 用途 |
|---|---|
| currentSrc | 获取当前视频源路径。 |
| currentTime | 当前视频播放的起始位置。 |
| duration | 视频长度,以秒为单位。 |
| ended | 视频的播放是否已结束。 |
| loop | 播放结束时是否重新播放。 |
| muted | 视频是否静音。 |
| playbackRate | 视频的当前播放速度。 |
| source | 视频的源路径。 |
| videoHeight/videoWidth | 视频源高度/视频源宽度。 |
| volume | 当前音量。 |
方法:
| 名称 | 用途 |
|---|---|
| canPlayType | 检测是否支持播放指定格式视频。 |
| load | 重新加载视频。 |
| pause | 暂停播放视频。 |
| play | 开始播放视频。 |