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
}