UI组件扩展
Provides essential UI extension components for Unity projects, currently featuring video playback controls. Includes a progress slider for seeking and playback time display, plus a play/pause toggle that syncs with external video player plugins like AVPro Video. Designed for quick integration through drag-and-drop setup with minimal configuration.
com.dreemurrstudio.uiextension 
Install via UPM
Add to Unity Package Manager using this URL
https://www.pkglnk.dev/uiextension.git README Markdown
Copy this to your project's README.md
## Installation
Add **UI组件扩展** to your Unity project via Package Manager:
1. Open **Window > Package Manager**
2. Click **+** > **Add package from git URL**
3. Enter:
```
https://www.pkglnk.dev/uiextension.git
```
[](https://www.pkglnk.dev/pkg/uiextension)README
Unity UI 组件扩展模块 (UI Extension)
概述
本模块为 Unity 项目提供了一套常用的 UI 扩展组件,目前包含 视频播放控制 功能。它基于现成的视频播放器插件(如 AVPro Video 的 MediaPlayer),封装了播放进度控制和播放/暂停切换的 UI 逻辑,使你可以通过拖拽和少量配置快速搭建视频播放面板
当前包含的功能
视频播放进度控制 (
MediaPlayProgressSlider)- 基于
Slider的视频进度条组件 - 支持拖动进度条调整播放进度
- 支持在拖动时自动暂停、结束拖动后继续播放
- 支持在文本中显示“当前进度 / 总时长”的时间信息
- 基于
播放状态切换开关 (
MediaPlayStateSwitchToggle)- 基于
Toggle的播放/暂停状态开关 - 勾选状态表示“暂停中”,未勾选表示“播放中”
- 与视频播放器事件联动,自动同步 UI 状态(例如响应播放/暂停事件)
- 基于
注:视频播放依赖外部视频播放插件(如 AVPro Video),本模块只负责 UI 控制层
快速开始
1. 环境准备
- 在项目中导入你所使用的视频播放插件(例如 AVPro Video)
- 在场景中创建并配置一个
MediaPlayer(或对应插件的播放组件),确保其可以正常播放视频
2. 使用 MediaPlayProgressSlider
MediaPlayProgressSlider 用于显示和控制视频播放进度
- 在 UI 上创建一个
Slider对象 - 将脚本
MediaPlayProgressSlider挂载到该Slider上 - 在 Inspector 中进行如下绑定:
Media Player: 绑定对应的MediaPlayer组件Progress Time Text: 绑定一个TMP_Text用于显示时间Time Format String: 设置时间显示格式,例如:{0:D2}:{1:D2} / {2:D2}:{3:D2}Pause On Seek: 勾选后,在拖动进度条时会自动暂停播放,拖动结束后自动继续播放
脚本会自动:
- 在视频打开后获取总时长
- 在每帧更新播放进度和时间显示
- 在拖动进度条时调用
MediaPlayer.Control.Seek(...)调整播放位置
3. 使用 MediaPlayStateSwitchToggle
MediaPlayStateSwitchToggle 用于控制视频播放/暂停状态
- 在 UI 上创建一个
Toggle对象(可以使用自定义的开关样式) - 将脚本
MediaPlayStateSwitchToggle挂载到该Toggle上 - 在 Inspector 中将
Media Player字段绑定到对应的MediaPlayer组件
行为说明:
- 当
Toggle为 勾选 状态时:视为暂停,脚本会调用mediaPlayer.Pause() - 当
Toggle为 未勾选 状态时:视为播放,脚本会调用mediaPlayer.Play() - 同时会监听
MediaPlayer的事件,如:Unpaused时自动将Toggle设为未勾选Paused时自动将Toggle设为勾选
这样可以保证 UI 与实际播放状态始终同步
推荐使用方式
一般情况下,你可以创建一个统一的视频播放面板预制体,例如:
- 根对象:
VideoPlayPanel- 子对象:
MediaPlayer(视频输出与控制) - 子对象:
ProgressSlider(挂载MediaPlayProgressSlider) - 子对象:
PlayToggle(挂载MediaPlayStateSwitchToggle) - 可选子对象:时间显示文本、标题、关闭按钮等
- 子对象:
在不同场景中直接实例化 VideoPlayPanel 并更换视频源即可复用完整的视频播放控制 UI
本模块后续可以扩展更多 UI 功能(如循环滚动视图、分页控件等),但当前版本主要聚焦于视频播放控制 UI 的封装
No comments yet. Be the first!