unity webgl怎么通过StreamingAssets的方式点击不同按钮播放mp4格式视频的操作方式和完整代码,多按钮和视频10个以上
时间: 2024-03-09 10:51:13 浏览: 80
下面是一份适用于 Unity WebGL 平台的代码示例,可以通过 StreamingAssets 的方式点击不同按钮播放 MP4 格式视频:
```csharp
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
public class VideoPlayerController : MonoBehaviour
{
public List<string> videoFileNames; // 视频文件名列表
public RawImage image; // 用于显示视频的 RawImage 组件
public Button[] buttons; // 触发播放不同视频的按钮组件数组
private VideoPlayer player; // 视频播放器
private int currentVideoIndex = -1; // 当前播放的视频索引
private void Awake()
{
player = gameObject.AddComponent<VideoPlayer>();
player.playOnAwake = false;
player.renderMode = VideoRenderMode.RenderTexture;
player.targetTexture = new RenderTexture(1920, 1080, 16, RenderTextureFormat.ARGB32);
image.texture = player.targetTexture;
for (int i = 0; i < buttons.Length; i++)
{
int index = i; // 保存当前按钮的索引
buttons[i].onClick.AddListener(() => PlayVideo(index));
}
}
private void PlayVideo(int index)
{
if (index < 0 || index >= videoFileNames.Count) return;
if (currentVideoIndex == index)
{
player.Play();
return;
}
currentVideoIndex = index;
player.Stop();
string videoPath = Application.streamingAssetsPath + "/" + videoFileNames[index];
StartCoroutine(PlayVideoCoroutine(videoPath));
}
private IEnumerator<WaitForSeconds> PlayVideoCoroutine(string videoPath)
{
player.url = videoPath;
player.Prepare();
while (!player.isPrepared)
{
yield return new WaitForSeconds(0.1f);
}
player.Play();
}
}
```
在这个示例中,我们为每个按钮添加了一个点击事件,当用户点击某个按钮时,会调用 PlayVideo 方法来播放对应的视频。在 PlayVideo 方法中,我们会加载指定的视频文件,并通过协程等待视频加载完成后开始播放。同时,我们还记录了当前正在播放的视频索引,以便在用户点击同一个按钮时不需要重新加载视频。
需要注意的是,为了在 WebGL 平台上能够正常加载 StreamingAssets 中的文件,我们需要将 MP4 文件的压缩格式设置为“StreamingAsset”。在 Unity 编辑器中,选中对应的 MP4 文件,然后在“Inspector”窗口中将“Compression Format”设置为“StreamingAsset”。
此外,在 Unity 2018 及以上版本中,我们还需要在打包 WebGL 项目时,将“Build Settings”中的“WebGL”选项卡中的“Prefer 32-bit”选项关闭,否则会导致视频无法正常播放。
阅读全文