96 lines
2.8 KiB
C#
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("音频加载失败!");
|
|
}
|
|
});
|
|
}
|
|
}
|