目录
零. 简介
一、视频支持的格式和平台
二、视频播放组件
三、视频播放控制
四、视频与游戏交互
五、性能和优化

零. 简介
在 Unity 中,视频播放是一项强大的功能,可以为游戏和应用程序增添丰富的多媒体体验。
一、视频支持的格式和平台
Unity 支持多种常见的视频格式,包括但不限于以下几种:
- MP4:这是一种广泛使用的视频格式,具有良好的兼容性和压缩比。在 Unity 中,MP4 格式的视频可以通过 
VideoPlayer组件进行播放。 - MOV:苹果公司开发的视频格式,通常用于 Mac 和 iOS 设备。Unity 也可以播放 MOV 格式的视频。
 - WebM:一种开放的视频格式,适用于网络播放。WebM 格式的视频在 Unity 中可以通过 
VideoPlayer组件进行播放,并且可以在网页上进行嵌入。 
二、视频播放组件

-  
VideoPlayer组件:- 功能:这是 Unity 中用于播放视频的核心组件。它可以加载和播放视频文件,控制视频的播放状态(播放、暂停、停止),设置视频的音量、循环播放等属性。
 - 属性: 
    
source:指定视频的来源,可以是本地文件路径、网络 URL 或 AssetBundle 中的视频资源。playOnAwake:决定是否在游戏对象被激活时自动播放视频。loop:设置视频是否循环播放。isLooping:获取当前视频是否处于循环播放状态。volume:控制视频的音量大小,取值范围为 0(静音)到 1(最大音量)。targetTexture:将视频输出到一个纹理上,可以将该纹理应用到材质上,以在游戏场景中显示视频。
 - 事件: 
    
started:视频开始播放时触发。paused:视频暂停时触发。stopped:视频停止播放时触发。finished:视频播放完成时触发。
 
 




这样点击播放就会播放视频了.
-  
RawImage组件:- 通常与 
VideoPlayer组件一起使用,用于在游戏场景中显示视频。将VideoPlayer的targetTexture分配给RawImage的texture属性,即可在屏幕上显示视频。 
 - 通常与 
 
也可以新建一个材质


这样把材质添加到一个物体上,物体表面就会显示出来视频.
三、视频播放控制
- 播放、暂停和停止: 
  
- 可以通过脚本控制 
VideoPlayer的Play()、Pause()和Stop()方法来播放、暂停和停止视频。 - 例如:
 
 - 可以通过脚本控制 
 
using UnityEngine;
using UnityEngine.Video;
public class VideoController : MonoBehaviour
{
    public VideoPlayer videoPlayer;
    void Start()
    {
        videoPlayer.Play();
    }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            if (videoPlayer.isPlaying)
            {
                videoPlayer.Pause();
            }
            else
            {
                videoPlayer.Play();
            }
        }
    }
}
 
-  
进度控制:
- 可以通过修改 
VideoPlayer的time属性来设置视频的播放进度。例如,将time设置为视频总时长的一半,可以将视频跳转到中间位置。 - 也可以通过获取 
VideoPlayer的frame属性来获取当前播放的视频帧,并通过设置frame属性来跳转到特定的帧。 -  
using UnityEngine; using UnityEngine.Video; public class VideoProgressController : MonoBehaviour { public VideoPlayer videoPlayer; void Update() { if (Input.GetKeyDown(KeyCode.RightArrow)) { videoPlayer.time += 5; // 快进 5 秒 } else if (Input.GetKeyDown(KeyCode.LeftArrow)) { videoPlayer.time -= 5; // 后退 5 秒 } } } 
 - 可以通过修改 
 -  
音量控制:
- 可以通过修改 
VideoPlayer的volume属性来控制视频的音量大小。取值范围为 0(静音)到 1(最大音量)。 -  
using UnityEngine; using UnityEngine.Video; public class VideoVolumeController : MonoBehaviour { public VideoPlayer videoPlayer; void Update() { if (Input.GetKeyDown(KeyCode.UpArrow)) { videoPlayer.volume += 0.1f; // 音量增加 0.1 } else if (Input.GetKeyDown(KeyCode.DownArrow)) { videoPlayer.volume -= 0.1f; // 音量减少 0.1 } } } 
 - 可以通过修改 
 
四、视频与游戏交互
- 触发事件: 
  
- 可以在视频的特定时间点触发事件,例如在视频播放到某个时刻时执行特定的游戏逻辑。可以使用 
VideoPlayer的time属性和事件函数来实现这一功能。 - 例如,在视频播放到 10 秒时触发一个游戏事件:
 
 - 可以在视频的特定时间点触发事件,例如在视频播放到某个时刻时执行特定的游戏逻辑。可以使用 
 
using UnityEngine;
using UnityEngine.Video;
public class VideoEventTrigger : MonoBehaviour
{
    public VideoPlayer videoPlayer;
    void Update()
    {
        if (videoPlayer.time >= 10 &&!videoPlayer.isPaused)
        {
            TriggerGameEvent();
        }
    }
    void TriggerGameEvent()
    {
        Debug.Log("Video event triggered!");
    }
}
 
- 视频作为游戏背景: 
  
- 可以将视频作为游戏场景的背景,通过将 
VideoPlayer的targetTexture分配给一个材质,并将该材质应用到一个平面或其他游戏对象上,以实现视频背景效果。 -  
using UnityEngine; using UnityEngine.Video; public class VideoBackground : MonoBehaviour { public VideoPlayer videoPlayer; public Material backgroundMaterial; void Start() { videoPlayer.Play(); backgroundMaterial.mainTexture = videoPlayer.targetTexture; } } 
 - 可以将视频作为游戏场景的背景,通过将 
 
五、性能和优化
-  
视频分辨率和质量:
- 选择合适的视频分辨率和质量,以平衡视觉效果和性能。较高分辨率和质量的视频可能会占用更多的内存和处理资源。可以在导入视频时设置视频的压缩选项,以减小视频文件的大小。
 
 -  
视频缓存:
- 如果视频需要频繁播放或在不同场景中使用,可以考虑使用视频缓存技术,以减少视频的加载时间和提高性能。可以使用 Unity 的资源加载和缓存系统来实现视频的缓存。
 
 -  
移动平台优化:
- 在移动平台上,需要特别注意视频播放的性能和功耗问题。可以考虑使用硬件加速的视频解码和优化视频的播放设置,以提高性能和减少电池消耗。例如,可以使用 
VideoPlayer的renderMode属性设置为VideoRenderMode.APIOnly来使用硬件加速解码。 
 - 在移动平台上,需要特别注意视频播放的性能和功耗问题。可以考虑使用硬件加速的视频解码和优化视频的播放设置,以提高性能和减少电池消耗。例如,可以使用 
 



















