【零基础入门unity游戏开发——进阶篇】unity中配合VideoClip和VideoPlayer组件实现视频播放

ops/2025/3/15 4:34:31/

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇

  • 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的同学入门。
  • unity通用篇】:主要讲解unity的基础通用的知识,包括unity界面、unity脚本、unity资源管理、unity动画、unity摄像机等,适合unity初学者入门。
  • unity3D篇】:主要讲解unity3D的知识,unity3D角色、unity3D物理系统、unity3D光照等,适合只想做2D游戏的开发者学习。
  • unity2D篇】unity2D篇:主要讲解unity2D的知识,包括unity2D角色、unity2D物理系统、unity2D光照等,适合只想做3D游戏的开发者学习。

这样方便大家按需选择性的去学习,比如有编程基础的大概率可以直接从unity通用篇开始入门,没有编程基础的建议从C#篇开始学习。只想做2D游戏的话,可以直接从unity2D篇开始学习,3D篇大概率就不需要看了,节约学习时间成本。

最终效果演示

在这里插入图片描述

文章目录

  • 最终效果演示
  • 一、Unity 视频播放相关知识介绍
    • 1、为什么要学习视频播放?
    • 2、Unity 的视频播放解决方案
    • 3、视频格式和编解码器
      • 3.1 视频的本质
      • 3.2 视频的编码器和解码器
      • 3.3 硬件解码 vs 软件解码
    • 4、Unity 中的视频兼容性
      • 4.1 什么是视频兼容性?
      • 4.2 Unity 编辑器中的视频兼容性
  • 二、VideoClip视频资源参数
    • 1、VideoClip视频资源信息
    • 2、视频资源参数相关
      • 2.1 sRGB(颜色纹理)
      • 2.2 Transcode 是否开启转码
      • 2.3 Dimensions 控制源文件内容的大小调整方式
      • 2.4 Codec 选择用于转码的解编码器
      • 2.5 Bitrate Mode 比特率模式
      • 2.6 Spatial Quality 空间质量
      • 2.7 Keep Alpha 保留Alpha透明通道并在转码期间将其编码
      • 2.8 Deinterlace去交错设置
      • 2.9 Filp Horizontally 水平翻转
      • 2.10 Flip Vertically 垂直翻转
      • 2.11 Import Audio 导入音频
  • 三、VideoPlayer视频播放器
    • 1、VideoPlayer视频播放器是什么
    • 2、添加VideoPlayer视频播放器组件
      • 方法一
      • 方法二
      • 方法三
    • 3、VideoPlayer视频播放器组件参数
      • 3.1 Source 源
      • 3.2 Video Clip 视频剪辑
      • 3.3 URL 视频路径
      • 3.4 Update Mode 更新模式
      • 3.5 Play On Awake 唤醒时播放
      • 3.6 Wait For First Frame 等待第一帧
      • 3.7 Loop 循环
      • 3.8 Skip On Drop 放下时跳过
      • 3.9 Playback Speed 回放速度 播放速度
      • 3.10 Render Mode 渲染模式
        • (1) **Camera Far Plane**(摄像机远平面):在摄像机的远平面上渲染视频。
        • (2) **Camera Near Plane**(摄像机近平面):在摄像机的近平面上渲染视频。
        • (3) **Render Texture**(渲染器纹理):将视频渲染到 Render Texture 中。
        • (4) **Material Override**(材质覆盖)
        • (5) **API Only**(仅限 API):将视频呈现到VideoPlayer.texture脚本API属性中。您必须使用脚本将纹理指定给其预期目标。
      • 3.11 Aspect Ratio 宽高比
      • 3.12 Audio Output Mode 音频输出模式
  • 四、VideoPlayer视频播放器代码控制
    • 1、引用命名空间
    • 2、将一个 VideoPlayer 附加到主摄像机
    • 3、参数相关设置
    • 4、方法相关
    • 5、事件相关
  • 五、全景视频
    • 1、Unity支持的全景视频
      • 1.1 等距圆柱投影布局
      • 1.2 立方体贴图布局
    • 2、在Unity中使用全景视频
    • 3、使用全景视频时的注意事项
      • 3.1 Render Texture渲染纹理的Size和视频尺寸一样
      • 3.2 将渲染纹理的Depth Buffer深度模板格式设置为无
      • 3.3 Skybox>Panoramic天空盒材质设置
    • 4、总结
  • 专栏推荐
  • 完结

一、Unity 视频播放相关知识介绍

1、为什么要学习视频播放?

在游戏开发中,播放视频是一个常见的需求。比如:

  • 游戏开场动画:通过视频交代游戏背景。
  • 剧情动画:通过视频表现剧情发展。

2、Unity 的视频播放解决方案

Unity 提供了多种视频播放的解决方案:

  • MovieTexture:Unity 老版本的功能,现在已经几乎被淘汰。
  • VideoPlayer 组件:目前主流的视频播放工具,功能强大,能满足大多数需求。
  • 第三方插件:比如 AVPro Video,功能更强大,但需要额外购买。

我们主要学习 VideoPlayer 组件,因为它几乎能应对日常开发中的所有视频播放需求。

3、视频格式和编解码器

3.1 视频的本质

  • 视频是数据的集合(图像、音频、字幕等)。

  • 不同格式(如 .mp4、.mov)只是数据存储方式不同。

3.2 视频的编码器和解码器

为了节省存储空间和带宽,视频中的每个轨道(如音频、字幕等)都会使用“编解码器”进行压缩和解压缩:

  • 编码器:把视频数据压缩,节省空间。
  • 解码器:把视频数据解压,才能播放。

常见的视频编解码器是 H.264,常见的音频编解码器是 AAC

3.3 硬件解码 vs 软件解码

  • 硬件解码:通过 GPU(显卡)来解压视频,效率高,降低 CPU 负担,但支持的格式有限。
  • 软件解码:通过 CPU 来解压视频,支持所有格式,但会增加 CPU 负担,可能导致卡顿。

4、Unity 中的视频兼容性

4.1 什么是视频兼容性?

兼容性指的是视频能否在特定的操作系统或设备上正常播放。Unity 编辑器和目标平台(如 iOS、Android)对视频格式和编解码器的支持可能不同。

4.2 Unity 编辑器中的视频兼容性

在 Unity 编辑器中,视频能否正常播放取决于:

  1. 视频格式:Unity 支持 .mp4.mov.webm 等格式。
  2. 编解码器:建议使用 H.264 编解码器,因为它兼容性最好。

建议:使用 .mp4 格式 + H.264 编解码器,这样在 Unity 编辑器中可以正常预览。如果需要更好的性能可以使用 H.265 编解码器(支持 macOS 11.13+、Windows 10、iOS 11.0+、Android 5.0+)。


二、VideoClip视频资源参数

1、VideoClip视频资源信息

  • 当我们将准备好的视频导入Unity后,我们可以选中该视频剪辑,并在Inspector窗口中进行设置。
    在这里插入图片描述
  • 查看视频文件的基本信息,大小、时间、尺寸等等
    在这里插入图片描述
    在这里插入图片描述

2、视频资源参数相关

在这里插入图片描述

2.1 sRGB(颜色纹理)

是否开启sRGB,sRGB是微软联合惠普、三菱、爱普生等厂商联合开发的通用色彩标准。它的主要作用是避免在不同设备出现色差。一般默认让它勾选即可。

2.2 Transcode 是否开启转码

开启后下方参数才能被设置。

2.3 Dimensions 控制源文件内容的大小调整方式

在这里插入图片描述

参数介绍
Original Size保持原始大小
Three Quarter Res将源大小调整为其原始宽度和高度的四分之三
Half Res将源大小调整为其原始宽度和高度的一半
Quarter Res将源大小调整为其原始宽度和高度的四分之一
Square 1024将源大小调整为1024x1024正方形图像。宽高比可控
Square 512将源大小调整为512x512正方形图像。宽高比可控
Square 256将源大小调整为256x256正方形图像。宽高比可控
Custom Size将源大小调整为自定义分辨率。宽高比可控

2.4 Codec 选择用于转码的解编码器

在这里插入图片描述

参数介绍
Auto(自动)为目标平台选择最合适的视频编解码器
H264MPEG–4 高级视频编码 (AVC) 视频编解码器,受大多数平台上的硬件支持
H265MPEG-H Part 2 或高效视频编码 (HEVC) 视频编解码器,受某些平台上的硬件支持
VP8VP8视频编解码器,受到大多数平台上的软件支持,并受到 Android 和 WebGL 等几个平台上的硬件支持。

2.5 Bitrate Mode 比特率模式

Low(低)、Medium(中)或 High (高)比特率,相对于所选编解码器的基准配置文件。
在这里插入图片描述

2.6 Spatial Quality 空间质量

此设置决定视频图像在转码过程中是否压缩大小,缩小意味着它们占用的存储空间更少。但是,调整图像大小也会导致在播放期间出现模糊。
在这里插入图片描述

  • Low Spatial Quality:在转码期间图像大小显著减小(通常为原始尺寸的四分之一),然后在播放时扩展回原始大小。它可以节省最多的存储空间,但在播放时会产生最大的模糊度
  • Medium Spatial Quality:在转码期间图像大小适度减小(通常为原始尺寸的一半),然后在播放时扩展回原始大小。图像将比使用 Low Spatial Quality 选项的图像更清晰,所需存储空间有所减少。
  • High Spatial Quality:如果选择此选项,则不会调整大小。这意味着在转码期间图像大小不会减小,因此将保持视频的原始视觉清晰度。

2.7 Keep Alpha 保留Alpha透明通道并在转码期间将其编码

仅对具有Alpha通道的源显示此属性。注意:Android平台的原生 VP8 支持中不包括透明度支持,这意味着必须启用转码,以便 Unity 使用其内部 Alpha 表示方法。

2.8 Deinterlace去交错设置

控制隔行扫描源在转码期间如何解除隔行扫描,去交错设置主要是为了优化动态画面的清晰度
在这里插入图片描述

  • Off

http://www.ppmy.cn/ops/165847.html

相关文章

[Linux] Not enough free space to extract *.zip or file

原因分析: 导致该错误的主要原因是,虽然你的主分区确实有足够的可用空间,但很多图形解压工具在解压时会默认先把文件写到一个较小的临时文件系统(tmpfs),比如这里只显示 1.6 GB。ZIP 文件在解压过程中会产…

git 撤销某次提交的上交到远程服务器的commit提交,此提交后面的commit需要保留【deeepseek生成】

核心思路 使用 git rebase -i 重写提交历史,删除目标提交后强制推送到远程(需谨慎操作)。 操作步骤 1. 确认要删除的提交位置 # 查看提交历史(找到要删除的提交哈希,例如 a1b2c3d) git log --oneline查看提…

大白话react第十九章React 与 WebGL 项目的深度拓展和优化

大白话react第十九章React 与 WebGL 项目的深度拓展和优化 1. 实现 VR/AR 交互体验 在 3D 网页应用里加入虚拟现实(VR)或者增强现实(AR)功能,能让用户有更沉浸的体验。就好比用户戴上 VR 眼镜,就能感觉自…

【我的 PWN 学习手札】House of Pig

House Of Pig House of Pig是利用tcache stash unlink与largebin attack攻击IO_FILE共同实现的一种手法,一般来说利用得到的任意地址写能力往hook上写数据,从而完成对程序流的劫持。 一、关键源码分析:_IO_str_overflow const struct _IO_…

前端学习笔记(三)——ant-design vue表单传递数据到父页面

前言 善用AI&#xff0c;快速解决定位 原理 a-form所在的SFC&#xff08;单文件&#xff09;vue中需要将表单数据传递给父页面SFC文件中&#xff0c;使用emit方法 代码 子组件&#xff08;Form.vue&#xff09; <template><a-form submit"handleSubmit&qu…

Redis 设置密码(配置文件、docker容器、命令行3种场景)

现在没有配置密码的 Redis&#xff0c;一般来说&#xff0c;已经被很多安全检测系统视为漏洞和问题了&#xff0c;官方的 Redis 默认是关闭密码的&#xff0c;如果需要设置密码&#xff0c;目前应用场景来说可以分为三种&#xff0c;如下&#xff1a; 1、基于配置文件的 通过…

用 Vue 3.5 TypeScript 做了一个日期选择器(改进版)

上一篇 已经实现了一个日期选择器&#xff0c;只不过是模态窗的形式&#xff0c;这个版本改为文本框弹出&#xff0c;点击空白处可关闭日历 代码也增加了不少 <template><div><!-- 添加文本框 --><div class"date-picker-input-wrapper">&l…

Java 实现 Android ViewPager2 顶部导航:动态配置与高效加载指南

Java 实现&#xff1a;明确使用的编程语言。Android ViewPager2&#xff1a;技术栈和核心组件。顶部导航&#xff1a;功能点。动态配置与高效加载指南&#xff1a;突出动态配置的灵活性和性能优化的重点。 在 Android 中使用 Java 实现 ViewPager2 和 TabLayout 的顶部导航也是…