Unity从StreamingAssets加载图片、xml文字、音频和视频

首先是加载文件夹下的图片:

#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

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值