LMQT/Assets/Scripts/loadVideo.cs
2025-02-14 10:32:58 +08:00

96 lines
2.8 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.Video;
public class loadVideo : MonoBehaviour
{
public VideoPlayer videoPlayer;
public AudioSource AS;
private string buildingName;
public GameObject BV;
// Start is called before the first frame update
private void Start()
{
building building=FindObjectOfType<building>();
buildingName = building.buildingName;
loadSound();
}
public void LoadVideoFromSA()
{
// 构建完整的文件路径
string filePath = Path.Combine(Application.streamingAssetsPath, "Video/", buildingName + ".mp4");
// 判断文件是否存在
if (!File.Exists(filePath))
{
Debug.LogError($"视频文件 {filePath} 不存在!");
}
else
{
BV.SetActive(true);
// 启动协程加载视频
videoPlayer.url = "file://" + filePath;
videoPlayer.Play();
}
}
public void LoadSoundFromSA(string buildingName, string ML, Action<AudioClip> onAudioLoaded)
{
// 构建完整的文件路径
string filePath = Path.Combine(Application.streamingAssetsPath, ML, buildingName + ".wav");
// 判断文件是否存在
if (!File.Exists(filePath))
{
Debug.LogError($"音频文件 {filePath} 不存在!");
onAudioLoaded(null); // 回调并传递null
return;
}
// 启动协程加载音频
StartCoroutine(LoadAudioClipCoroutine(filePath, onAudioLoaded));
}
private IEnumerator LoadAudioClipCoroutine(string filePath, Action<AudioClip> onAudioLoaded)
{
// 创建UnityWebRequest来加载音频
UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip("file://" + filePath, AudioType.WAV);
yield return www.SendWebRequest();
// 检查加载是否成功
if (www.result != UnityWebRequest.Result.Success)
{
Debug.LogError($"音频加载失败: {www.error}");
onAudioLoaded(null); // 回调并传递null
}
else
{
// 获取并返回加载的音频
AudioClip audioClip = DownloadHandlerAudioClip.GetContent(www);
onAudioLoaded(audioClip); // 回调并传递加载的音频
Debug.Log("音频加载成功:" + filePath);
}
}
public void loadSound()
{
// 调用加载音频的方法,并传递回调函数
this.LoadSoundFromSA(buildingName, "sound/", (audioClip) =>
{
if (audioClip != null)
{
Debug.Log("音频加载成功," + buildingName + "播放音频!");
AS.clip = audioClip;
//AS.Play();
}
else
{
Debug.LogError("音频加载失败!");
}
});
}
}