首先是加载文件夹下的图片:
#region 加载图片
/// <summary>
/// 加载文件夹下的图片
/// </summary>
public bool LoadPics(string pathName)
{
images = new List<Texture2D>();
List<string> imgPaths = new List<string>();//存放图片路径
string imgtype = "*.jpg|*.png";
string[] Imagetype = imgtype.Split('|'); //把图片类型存在数组里
if (Directory.Exists(Application.streamingAssetsPath + "/Pics/" + pathName))
{
for (int i = 0; i < Imagetype.Length; i++)
{
//获取application.datapath文件夹下所有的图片路径
string[] dirs = Directory.GetFiles(Application.streamingAssetsPath + "/Pics/" + pathName, Imagetype[i]);
for (int j = 0; j < dirs.Length; j++)
{
imgPaths.Add(dirs[j]);
}
}
}
if (imgPaths.Count > 0)
{
for (int i = 0; i < imgPaths.Count; i++)
{
Texture2D tx = new Texture2D(960, 540);
tx.LoadImage(getImageByte(imgPaths[i]));
images.Add(tx);
}
//初始化:读取首张图片
picIndex = 0;
ShowPic(picIndex);
return true;
}
else
{
return false;
}
}
/// <summary>
/// 根据图片路径返回图片的字节流
/// </summary>
/// <param name="imagepath"></param>
/// <returns></returns>
private static byte[] getImageByte(string imagepath)
{
FileStream files = new FileStream(imagepath, FileMode.Open);
byte[] imgByte = new byte[files.Length];
files.Read(imgByte, 0, imgByte.Length);
files.Close();
return imgByte;
}
/// <summary>
/// 显示图片
/// </summary>
/// <param name="i"></param>
public void ShowPic(int i)
{
Sprite sprite = Sprite.Create(images[i], new Rect(0, 0, images[i].width, images[i].height), new Vector2(0.5f, 0.5f));
//HUD.Image.sprite = sprite;
}
#endregion
加载xml中的文字介绍:
#region 加载xml中的文字介绍
/// <summary>
/// 标题和文字介绍
/// </summary>
/// <param name="device"></param>
void ShowDesc(string device)
{
//HUD.Title.text = device;
//HUD.Content.text = ParseXml(device);
}
/// <summary>
/// 解析xml
/// </summary>
string ParseXml(string device)
{
string filePath = Application.streamingAssetsPath + "/desc.xml";
if (File.Exists(filePath))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filePath);
XmlNodeList node = xmlDoc.SelectSingleNode("Content").ChildNodes;
//遍历节点
foreach (XmlElement ele in node)
{
if (ele.Name == "Item")
{
if (ele.Attributes["name"].Value.Equals(device))
return ele.Attributes["desc"].Value;
}
}
}
return "暂无介绍";
}
#endregion
<Content>
<Item name="注意事项1" desc="要求做实验前,了解实验内容,理解实验原理,明确实验目的。"/>
<Item name="注意事项2" desc="实验前熟悉具体的实验步骤,记录好有关常数。"/>
<Item name="注意事项3" desc="实验时同组之间注意分工明确,协调合作。"/>
<Item name="注意事项4" desc="在实验过程中,所加荷载要轻拿轻放,注意安全,避免意外事故发生。"/>
</Content>
使用NAudio加载mp3音频:
#region 加载音频
/// <summary>
/// 播放音频
/// </summary>
void PlaySound(string device)
{
soundUrl = Application.streamingAssetsPath + "/Sounds/" + device + ".mp3";
StartCoroutine("DownloadVoice");
}
[Obsolete]
IEnumerator DownloadVoice()
{
WWW www = new WWW(soundUrl);
yield return www;
if (www.isDone)
{
var stream = new MemoryStream(www.bytes);
var reader = new Mp3FileReader(stream);
var outstream = new MemoryStream();
WaveFileWriter.WriteWavFileToStream(outstream, reader);
//加载为AudioClip
audioSource.clip = WavUtility.ToAudioClip(outstream.ToArray(), 0);
audioSource.Play(); //播放音频
}
yield break;
}
#endregion
使用AVProVideo加载视频:
#region 加载视频
public void SetVideoFolderPath(string pathName)
{
videoFolderPath = "Videos/" + pathName;
videosName.Clear();
string folderPath = Path.Combine(Application.streamingAssetsPath, videoFolderPath); // 文件夹的完整路径
if (Directory.Exists(folderPath))
{
string[] filePaths = Directory.GetFiles(folderPath); // 获取文件夹中的所有文件的路径
foreach (string filePath in filePaths)
{
string fileName = Path.GetFileName(filePath); // 获取文件名称
if (!fileName.Contains(".meta"))
videosName.Add(fileName);
}
vcrController._videoFiles.Clear();
vcrController._folder = videoFolderPath;
foreach (var item in videosName)
{
vcrController._videoFiles.Add(item);
}
}
}
public void SetFullScreen()
{
videoRect.anchoredPosition = new Vector2(0, 0);
videoRect.sizeDelta = new Vector2(1920, 1080);
btnsRect.anchoredPosition = new Vector2(0, -360);
FullBtn.SetActive(false);
OriginBtn.SetActive(true);
}
public void SetOriginScreen()
{
videoRect.anchoredPosition = new Vector2(0, 36);
videoRect.sizeDelta = new Vector2(1152, 648);
btnsRect.anchoredPosition = new Vector2(0, -232);
FullBtn.SetActive(true);
OriginBtn.SetActive(false);
}
#endregion