You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中使用Handheld.PlayFullScreenMovie实现指定比例带控制非全屏视频播放

Handheld.PlayFullScreenMovie 是Unity专为移动平台设计的全屏专属播放接口,本身不支持自定义播放区域,控制栏也由系统原生提供无法定制,因此无法实现你要的指定区域播放、自定义控制功能。你可以使用Unity自带的VideoPlayer组件实现需求,具体步骤如下:

实现步骤

1. 基础UI与资源准备

  • 在你的UI画布下新建RawImage控件,调整它的RectTransform尺寸、位置为你需要的正方形/指定矩形区域
  • 新建对应比例的RenderTexture(如果是正方形播放可以设为1024*1024,可根据清晰度需求调整参数),将该RenderTexture赋值给RawImage的Texture属性

2. VideoPlayer组件配置

  • 给场景内任意游戏对象挂载VideoPlayer组件
  • 将你的视频文件拖入VideoPlayer的Video Clip字段
  • VideoPlayer的Render Mode选择Render Texture,并把刚才创建的RenderTexture赋值给Target Texture字段

3. 自定义控制功能实现

你可以自己在UI上添加播放/暂停、快进、快退、进度条等控件,通过以下代码实现控制逻辑:

using UnityEngine;
using UnityEngine.Video;
using UnityEngine.UI;

public class CustomVideoController : MonoBehaviour
{
    public VideoPlayer targetVideoPlayer;
    public Slider progressSlider;
    // 快进快退步长,单位为秒
    private float skipOffset = 5f;

    void Start()
    {
        // 视频准备完成后初始化进度条总长度
        targetVideoPlayer.prepareCompleted += (player) =>
        {
            progressSlider.maxValue = (float)player.length;
        };
    }

    void Update()
    {
        // 播放时同步进度条显示
        if (targetVideoPlayer.isPlaying)
        {
            progressSlider.value = (float)targetVideoPlayer.time;
        }
    }

    // 切换播放/暂停状态
    public void TogglePlayPause()
    {
        if (targetVideoPlayer.isPlaying)
            targetVideoPlayer.Pause();
        else
            targetVideoPlayer.Play();
    }

    // 快进
    public void FastForward()
    {
        targetVideoPlayer.time = Mathf.Min((float)targetVideoPlayer.time + skipOffset, (float)targetVideoPlayer.length);
    }

    // 快退
    public void FastBackward()
    {
        targetVideoPlayer.time = Mathf.Max((float)targetVideoPlayer.time - skipOffset, 0);
    }

    // 停止播放
    public void StopPlay()
    {
        targetVideoPlayer.Stop();
        progressSlider.value = 0;
    }

    // 拖动进度条跳转播放位置
    public void OnProgressDrag()
    {
        if (!targetVideoPlayer.isPrepared) return;
        targetVideoPlayer.time = progressSlider.value;
    }
}

4. 比例适配设置

如果需要固定正方形比例播放,直接锁定RawImage的宽高比为1:1即可。如果需要裁剪视频适配正方形,可调整VideoPlayer的Aspect Ratio属性为Fit Vertically或者Fit Horizontally,多余画面会自动裁剪,刚好填满你设置的正方形播放区域。

内容的提问来源于stack exchange,提问作者karthik keyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:18:02