Unity 读取外配-第三集-网络下载形式读取外部图片(简单但详细版)

本文主要是介绍Unity 读取外配-第三集-网络下载形式读取外部图片(简单但详细版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

需求:我有一个文件夹,里面有好多好多图片,我想软件自己读出来

一、具体逻辑

1.写出你希望读取的文件夹的地址

2.读取这个文件夹里所有的文件名称

3.把这个文件夹里名称中和图片有关的文件名找出来

4.用代码在unity里创建一个图片

5.用加载的图片替换掉创建的这个图片,并调整大小

二、逻辑实现部分

读取部分(1,2,3条):
 void Start(){string[] fileName ; //建一个string存所有的名字//获取应用里"streamingAssetsPath/0"文件夹下得文件名称fileName = Directory.GetFiles((Application.streamingAssetsPath + "/0"));//如果获取到了,把和图片有关的挑出来if (fileName.Length != 0){for (int i = 0; i < fileName.Length; i++){//获取文件的后缀,把是图片的挑出来并加载出来string tmp = Path.GetExtension(fileName[i]); if (tmp == ".jpg" || tmp == ".png" || tmp == ".gif" || tmp == ".bmp"){StartCoroutine(ReadPictureName(fileName[i])); //加载的方法,在下文}}}}
加载图片部分(4条):

加载图片部分(5条):
    //加载图片public Image image;//在外面创建的图片拖进来IEnumerator ReadPictureName(string url) {//“在url这个地址下有个图片,请下载下来”这件事写成一个要求UnityWebRequest request = UnityWebRequestTexture.GetTexture(url);yield return request.SendWebRequest();   //把上面这个要求发出去,并等待结果//如果下载已经完成if (request.isDone) {if (request.isNetworkError || request.isHttpError)  //如果网络错误,或者地址错误{Debug.Log(request.error);       //输出这个错误}else     //如果没错{//建一个2D图片,把request里的图片下载下来放进去Texture2D texture2d = DownloadHandlerTexture.GetContent(request);    //建一个sprite格式的图片,把下载下来的图片转换格式,放进去;括号里分别是(转换的对象,转换出来的图片的坐标,和宽高,设置物体自身的坐标原点位置,00就是左下角,0.5,0.5就是中间,1,1就是右上角)Sprite sprite = Sprite.Create(texture2d, new Rect(0, 0, texture2d.width, texture2d.height), new Vector2(0.5f, 0.5f));//把Image里的图片替换掉image.sprite = sprite;}}}

三、补充需求

我有一个文件夹,文件夹里有很多文件夹,我希望把每一个文件夹里的图片都读出来

重点语法:获取地址下所有文件夹的地址

string[] p = Directory.GetDirectories(path);

在之前的基础上增加逻辑:

1.获取文件夹内所有的地址

2.如果这些地址的后缀是图片格式

3.读取这些图片

四、补充需求的代码

using System.IO;
using UnityEngine;
using UnityEngine.Networking;public class Tool_ReadPics : MonoBehaviour
{string path;public List<Sprite> sprites;void Start(){path = Application.streamingAssetsPath + "/photos";StartCoroutine(ReadFolders(path));}IEnumerator ReadFolders(string path) {//获取path下的所有地址string[] allPath = Directory.GetFiles(path);//判断这些地址是否是图片格式foreach (string singlePath in allPath){if(Path.GetExtension(singlePath)==".jpg"|| Path.GetExtension(singlePath) == ".png"){yield return StartCoroutine(GetImageFromIO(singlePath));}}//获取地址下所有文件夹的地址string[] p = Directory.GetDirectories(path);if (p.Length == 0){}else{foreach (string p0 in p){yield return StartCoroutine(ReadFolders(p0));}}}//读取图片IEnumerator GetImageFromIO(string path) {UnityWebRequest request = UnityWebRequestTexture.GetTexture(path);yield return request.SendWebRequest();if (request.isDone){if (request.isNetworkError || request.isHttpError){Debug.Log(request.error);}else{Texture2D texture2d = DownloadHandlerTexture.GetContent(request);Sprite sprite = Sprite.Create(texture2d, new Rect(0, 0, texture2d.width, texture2d.height), new Vector2(0.5f, 0.5f));sprites.Add(sprite);}}}
}

这篇关于Unity 读取外配-第三集-网络下载形式读取外部图片(简单但详细版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/787423

相关文章

Python中Tkinter GUI编程详细教程

《Python中TkinterGUI编程详细教程》Tkinter作为Python编程语言中构建GUI的一个重要组件,其教程对于任何希望将Python应用到实际编程中的开发者来说都是宝贵的资源,这篇文... 目录前言1. Tkinter 简介2. 第一个 Tkinter 程序3. 窗口和基础组件3.1 创建窗

Django调用外部Python程序的完整项目实战

《Django调用外部Python程序的完整项目实战》Django是一个强大的PythonWeb框架,它的设计理念简洁优雅,:本文主要介绍Django调用外部Python程序的完整项目实战,文中通... 目录一、为什么 Django 需要调用外部 python 程序二、三种常见的调用方式方式 1:直接 im

Springboot配置文件相关语法及读取方式详解

《Springboot配置文件相关语法及读取方式详解》本文主要介绍了SpringBoot中的两种配置文件形式,即.properties文件和.yml/.yaml文件,详细讲解了这两种文件的语法和读取方... 目录配置文件的形式语法1、key-value形式2、数组形式读取方式1、通过@value注解2、通过

Nginx服务器部署详细代码实例

《Nginx服务器部署详细代码实例》Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,:本文主要介绍Nginx服务器部署的相关资料,文中通过代码... 目录Nginx 服务器SSL/TLS 配置动态脚本反向代理总结Nginx 服务器Nginx是一个‌高性

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

Qt实现对Word网页的读取功能

《Qt实现对Word网页的读取功能》文章介绍了几种在Qt中实现Word文档(.docx/.doc)读写功能的方法,包括基于QAxObject的COM接口调用、DOCX模板替换及跨平台解决方案,重点讨论... 目录1. 核心实现方式2. 基于QAxObject的COM接口调用(Windows专用)2.1 环境

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求