1 简介

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

​ VideoPlayer 属性面板如下:

  • Source:视频源类型,有 2 种类型:Video Clip、URL;
  • Video Clip:视频片段;
  • Play On Awake:启动时播放视频;
  • Wait For First Frame:是否在第一帧加载完成后才播放,只有在 Play On Awake 被勾选时才会生效;
  • Loop:是否开启循环播放;
  • Playback Speed:播放速度;
  • Render Mode:渲染模式,主要有:Camera Far Plane(在相机远平面上播放,需要绑定到相机,此时其他物体都在视频前面)、Came Near Plane(在相机近平面上播放,需要绑定到相机,此时其他物体都在视频后面)、Render Texture(视频的每一帧输出到 Render Texture 文件中,可以使用 RayImage 显示 Render Texture,这样视频就可以在 RayImage 中播放)、Material Override(需要绑定到一个 Renderer 对象,如 Cube 的 MeshRenderer,这样视频就可以在立方体表面播放);
  • Renderer:渲染器,当 Render Mode 选择为 Material Override 时才会有此选项,如:将 Hierarchy 窗口的 Cube 对象拖拽到 Renderer 中,视频就会在 Cube 表面播放;
  • Audio Output Mode:音频输出模式,主要有:None(不输出音频)、AudioSource(用 AudioSource 播放)、Direct(直接发送到音频输出硬件)。

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组件

【Unity3D】VideoPlayer组件的更多相关文章

  1. Flex4/AS3.0自定义VideoPlayer组件皮肤,实现Flash视频播放器

    要求 必备知识 本文要求基本了解 Adobe Flex编程知识. 开发环境 Flash Builder4/Flash Player11 演示地址 演示地址 资料下载   Adobe Flash Pla ...

  2. Unity3D中组件事件函数的运行顺序

    事件函数的运行顺序 Unity 脚本中有很多按预设顺序以脚本身份执行的事件函数. 其执行顺序例如以下: 载入第一个场景 启动场景时调用这些函数(为场景中的每一个对象调用一次). Awake: 始终在调 ...

  3. Unity3d基础组件 (Component) 和脚本 (Script) 关系

    原版的:http://edu.china.unity3d.com/learning_document/getData?file=/Manual/TheComponent-ScriptRelations ...

  4. Unity3D Image 组件附入图片问题

    作为新手经常会看到有个Image的组件 代码中理所当然的public 发现图片并不能附入其中, 解决办法直接 public Sprite 就可以了

  5. Unity3D深入浅出 -组件与节点之间的调用关系

    一.transform组件用途 1.维护场景树 2.对3D物体的平移,缩放,旋转 二.场景树定义 在Hierarchy视图中显示的: 一个game_scene场景,下面有Main Camera节点,D ...

  6. unity3d常用组件及分析

  7. Unity3D - UGUI组件的中英文对照

  8. Unity3d&C#分布式游戏服务器ET框架介绍-组件式设计

    前几天写了<开源分享 Unity3d客户端与C#分布式服务端游戏框架>,受到很多人关注,QQ群几天就加了80多个人.开源这个框架的主要目的也是分享自己设计ET的一些想法,所以我准备写一系列 ...

  9. Unity3D中播放视频的方法

    播放视频其实和贴图非常相像,因为播放视频用到的 MovieTexture 属于贴图 Texture 的子类.Unity3D 支持的视频格式有很多,但是还是建议使用 ogv 格式的视频,使用其他格式依然 ...

  10. warensoft unity3d 更新说明

    warensoft unity3d 组件的Alpha版本已经发布了将近一年,很多网友发送了改进的Email,感谢大家的支持. Warensoft Unity3D组件将继续更新,将改进的功能如下: 1. ...

随机推荐

  1. Laravel - 配置 数据库

  2. 常见的IE布局兼容问题

    (1)  div 中内容在IE和火狐中居中问题: (2)高度的问题,div出现重叠 (3)浮动引发的问题如外围DIV无法框住内部元素: (4)IE浮动margin产生双倍距离-display:inli ...

  3. Python注释是什么东东

    注释 标注解释,目的是帮助读者理解的文本 也就是说,注释首先是文本,其二是说明,其三是思路,其四是例子注释有两种形式 1. # ... 单行注释 用于对某句语句或语句块进行解释 放在语句块的头行或一个 ...

  4. cri-docker的学习和了解-番外

    cri-docker的学习和了解-番外 前言 因为已经有足足两年多没再详细接触K8S了. 然后利用两个晚上搭建了IPV6 SingleStack的K8S单机版 中间一直使用的docker的方式学习和工 ...

  5. [转帖]kingbase(人大金仓)的一些常用表操作语句

    包括 1)创建表 2)删除表 3)加字段 4)字段换名 5)字段改类型 6)字段添加注释 7)修改字段为自增类型 8)增加主键 9)查看模式下的表 一.创建和删除表 DROP TABLE IF EXI ...

  6. [转帖]VMware ESXi 各版本号对照表

    本博文转自以下链接: VMware ESXi Release and Build Number History | virten.net vSphere ESXi 7.0 Name Patch Dat ...

  7. [转帖] Linux命令拾遗-查看系统信息

    https://www.cnblogs.com/codelogs/p/16060714.html 简介# 作为一名程序员,有时需要关注自己的进程运行在什么样的软硬件环境里,比如几核cpu.固态硬盘还是 ...

  8. [转帖]Linux文本处理三剑客sed详解(正则匹配、命令示例)

    https://developer.aliyun.com/article/885609?spm=a2c6h.24874632.expert-profile.312.7c46cfe9h5DxWK 简介: ...

  9. Oracle 高版本导出到低版本的测试验证

    今天验证Oracle 由高版本 备份恢复到低版本 与方神沟通(双 还是他) 说可以使用 version的参数..然后搞一下.. expdp system/Test6530@ora12cr2 schem ...

  10. kubernetes中不可见的OOM

    最近看了一篇文章:Tracking Down "Invisible" OOM Kills in Kubernetes,其讲述的是由于内存不足导致Pod中的进程被killed,但Po ...