Unity3D

【Unity3D】VideoPlayer组件

2023-03-07  本文已影响0人  LittleFatSheep

1 简介

AudioSource组件中介绍了音频的播放,本文将介绍基于 VideoPlayer 组件实现视频播放。

VideoPlayer 属性面板如下:

2 播放视频

1)在 RayImage 中播放视频

在 Hierarchy 窗口创建一个 Empty 对象,并为其添加 VideoPlayer 组件,将视频片段拖拽到 Video Clip 中,勾选 Loop 选项,调整 Render Mode 为 Render Texture;在 Assets 窗口创建 Render Texture 文件,并将该文件拖拽到 VideoPlayer 组件中的 Target Texture 中。VideoPlayer 组件配置如下:

在 Hierarchy 窗口创建一个 RayImage 对象,调整其宽高分别为 600、300,并将 Assets 窗口的 Render Texture 文件拖拽到 RayImage 的 Texture 选项中,如下:

运行效果如下:

2)在立方体表面播放视频

在 Hierarchy 窗口创建一个 Cube 对象,并为其添加 VideoPlayer 组件,将视频片段拖拽到 Video Clip 中,勾选 Loop 选项,调整 Render Mode 为 Material Override,并将 Cube 对象拖拽到 Renderer 中,VideoPlayer 组件配置如下:

运行效果如下:

3)在胶囊体表面播放视频

在 Hierarchy 窗口创建一个 Capsule 对象,并为其添加 VideoPlayer 组件,其配置方法同第(2 节,运行效果如下:

3 播放视频(代码控制)

在 Hierarchy 窗口创建一个 RayImage 对象,并为其添加 VideoPlayer 组件,调整 Render Mode 为 Render Texture;在 Assets 窗口创建 Render Texture 文件,并将该文件拖拽到 VideoPlayer 组件中的 Target Texture 中以及 RayImage 组件的 Texture 中,配置如下:

给 RayImage 对象添加脚本组件如下:

VideoController.cs

using UnityEngine;
using UnityEngine.Video;

public class VideoController : MonoBehaviour {
    private VideoPlayer videoPlayer;

    private void Awake() {
        videoPlayer = GetComponent<VideoPlayer>();
        videoPlayer.isLooping = true;
        videoPlayer.playOnAwake = false;
        videoPlayer.clip = (VideoClip) Resources.Load("Video/Video");
        videoPlayer.Prepare(); // 播放引擎准备(提高开始播放时的速度)
    }

    private void Start() {
        videoPlayer.Play(); // 播放
    }

    private void Update() {
        if (Input.GetKeyDown(KeyCode.Space)) {
            if (videoPlayer.isPlaying) {
                videoPlayer.Pause(); // 暂停
            } else {
                videoPlayer.Play(); // 播放
            }
        }
    }
}

运行效果:

同第 2 章第 1)节,按空格键,可以控制视频播放和暂停。

声明:本文转自【Unity3D】VideoPlayer组件

上一篇 下一篇

猜你喜欢

热点阅读