using System; using System.Collections; using System.Collections.Generic; using System.IO; using TMPro; using UnityEngine; using UnityEngine.Networking; public class LoadHelper { #region 图片加载 /// /// 从Streamming下加载图片 /// /// Streamming下路径 /// public static Sprite LoadSpriteFromStreamming(string filePath) { Sprite sprite = null; string tmpPath = Path.Combine(Application.streamingAssetsPath, filePath); sprite = LoadSprite(tmpPath); return sprite; } /// /// 加载精灵 /// /// /// public static Sprite LoadSprite(string filePath) { Sprite sprite = null; Texture2D tmpTexture = LoadTexture(filePath); if (tmpTexture != null) { sprite = Sprite.Create(tmpTexture, new Rect(0f, 0f, tmpTexture.width, tmpTexture.height), Vector2.one * 0.5f); } return sprite; } /// /// 加载Texture /// /// /// public static Texture2D LoadTexture(string filePath) { Texture2D tmpTexture = null; filePath = GetSuffixExtension(filePath); if (!File.Exists(filePath)) { Debug.Log("" + filePath + "不存在" + ""); return null; } using (FileStream stream = new FileStream(filePath, FileMode.Open)) { byte[] tmpArr = new byte[stream.Length]; stream.Read(tmpArr, 0, tmpArr.Length); stream.Close(); tmpTexture = new Texture2D(1, 1); tmpTexture.LoadImage(tmpArr); } return tmpTexture; } /// /// 检索图片类型 /// /// /// private static string GetSuffixExtension(string filePath) { string tmpPath = filePath; if (File.Exists(filePath + ".png")) { tmpPath = filePath + ".png"; } if (File.Exists(filePath + ".PNG")) { tmpPath = filePath + ".PNG"; } if (File.Exists(filePath + ".JPG")) { tmpPath = filePath + ".JPG"; } if (File.Exists(filePath + ".jpg")) { tmpPath = filePath + ".jpg"; } if (File.Exists(filePath + ".jpeg")) { tmpPath = filePath + ".jpeg"; } return tmpPath; } #endregion #region 音频 /// /// 加载音频 /// /// /// /// /// IEnumerator LoadAudioClip(string filePath, AudioType audioType, Action callBack = null) { filePath = GetAudioClipExtension(filePath); using (UnityWebRequest unityWebRequest = UnityWebRequestMultimedia.GetAudioClip(filePath, GetAudioClipType(filePath))) { yield return unityWebRequest.SendWebRequest(); if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError) { Debug.LogError(unityWebRequest.error); } else { AudioClip tmpAudioClip = DownloadHandlerAudioClip.GetContent(unityWebRequest); if (tmpAudioClip != null) { callBack?.Invoke(tmpAudioClip); } else { Debug.LogError("音频加载失败"); } } } } /// /// 加载视频 /// /// /// /// /// IEnumerator LoadVideoClip(string filePath, AudioType audioType, Action callBack = null) { filePath = GetAudioClipExtension(filePath); using (UnityWebRequest unityWebRequest = UnityWebRequestMultimedia.GetAudioClip(filePath, GetAudioClipType(filePath))) { yield return unityWebRequest.SendWebRequest(); if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError) { Debug.LogError(unityWebRequest.error); } else { AudioClip tmpAudioClip = DownloadHandlerAudioClip.GetContent(unityWebRequest); if (tmpAudioClip != null) { callBack?.Invoke(tmpAudioClip); } else { Debug.LogError("音频加载失败"); } } } } /// /// 获取音频格式 /// /// /// private static AudioType GetAudioClipType(string filePath) { AudioType audioType = AudioType.UNKNOWN; if (File.Exists(filePath + ".mp3") || File.Exists(filePath + ".MP3")) { audioType = AudioType.MPEG; } if (File.Exists(filePath + ".wav") || File.Exists(filePath + ".WAV")) { audioType = AudioType.WAV; } if (File.Exists(filePath + ".vag") || File.Exists(filePath + ".VAG")) { audioType = AudioType.VAG; } return audioType; } /// /// 获取音频全路径 /// /// /// private static string GetAudioClipExtension(string filePath) { string audioPath = string.Empty; if (File.Exists(filePath + ".mp3")) { audioPath = filePath + ".MP3";} if (File.Exists(filePath + ".MP3")) { audioPath = filePath + ".MP3"; } if (File.Exists(filePath + ".wav")) { audioPath = filePath + ".wav"; } if (File.Exists(filePath + ".WAV")) { audioPath = filePath + ".WAV"; } if (File.Exists(filePath + ".vag")) { audioPath = filePath + ".vag"; } if (File.Exists(filePath + ".VAG")) { audioPath = filePath + ".VAG"; } return audioPath; } #endregion }