Unity打开电脑本地文件夹选择图片替换

  • 创建工程添加对应的UI如图所示
  • 创建ChangeImage脚本来监听按钮事件
  • 创建OpenFileName脚本
  • 将代码挂在到窗口,点击运行

创建工程添加对应的UI如图所示

创建ChangeImage脚本来监听按钮事件

/****************************************************文件:ChangeImage.cs作者:Mark日期:#CreateTime#功能:用于替换图片
*****************************************************/using System;
using System.Collections;
using System.Runtime.InteropServices;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class ChangeImage : MonoBehaviour
{public Image currentImage;//当前图片public Button selectBtn;//选择图片的按钮private void Start(){selectBtn.onClick.AddListener(OnSelectBtnOnclick);//监听按是否被按下,按下则执行括号中的方法}
//当按钮被按下时执行该脚本,打开本地文件夹private void OnSelectBtnOnclick(){OpenFileName ofn = new OpenFileName();ofn.structSize = Marshal.SizeOf(ofn);//可进行修改选择的文件类型ofn.filter = "图片文件(*.jpg*.png)\0*.jpg;*.png";ofn.file = new string(new char[256]);ofn.maxFile = ofn.file.Length;ofn.fileTitle = new string(new char[64]);ofn.maxFileTitle = ofn.fileTitle.Length;string path = Application.streamingAssetsPath;path = path.Replace('/', '\\');//默认路径ofn.initialDir = path;ofn.title = "选择需要替换的图片";ofn.defExt = "JPG";//显示文件的类型//注意 一下项目不一定要全选 但是0x00000008项不要缺少ofn.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;//OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST| OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIRif (WindowDll.GetOpenFileName(ofn)){StartCoroutine(LoadTextrue(ofn.file));}}//加载选择的图片并进行替换    IEnumerator LoadTextrue(string path){UnityWebRequest unityWebRequest = new UnityWebRequest("file:///" + path);DownloadHandlerTexture handlerTexture = new DownloadHandlerTexture(true);unityWebRequest.downloadHandler = handlerTexture;yield return unityWebRequest.SendWebRequest();if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError){print(unityWebRequest.error);}else{Texture2D t = handlerTexture.texture;//将选择的图片替换上去currentImage.sprite = Sprite.Create(t, new Rect(0, 0, t.width, t.height), Vector2.one);}}
}

其中OpenFileName 的类为打开windows文件夹的类 不需要任何操作 复制即用

创建OpenFileName脚本

/****************************************************文件:OpenFileName.cs作者:Mark日期:#CreateTime#功能:打开文件夹
*****************************************************/using System;
using System.Runtime.InteropServices;[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public class OpenFileName
{public int structSize = 0;public IntPtr dlgOwner = IntPtr.Zero;public IntPtr instance = IntPtr.Zero;public String filter = null;public String customFilter = null;public int maxCustFilter = 0;public int filterIndex = 0;public String file = null;public int maxFile = 0;public String fileTitle = null;public int maxFileTitle = 0;public String initialDir = null;public String title = null;public int flags = 0;public short fileOffset = 0;public short fileExtension = 0;public String defExt = null;public IntPtr custData = IntPtr.Zero;public IntPtr hook = IntPtr.Zero;public String templateName = null;public IntPtr reservedPtr = IntPtr.Zero;public int reservedInt = 0;public int flagsEx = 0;
}public class WindowDll
{[DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]public static extern bool GetOpenFileName([In, Out] OpenFileName ofn);public static bool GetOpenFileName1([In, Out] OpenFileName ofn){return GetOpenFileName(ofn);}
}

将代码挂在到窗口,点击运行

Unity打开电脑本地文件夹选择图片替换相关推荐

  1. Html读取本地文件夹下图片并显示的示例代码

    一 目的 在Html上选择本地文件夹,自动读取文件夹及子文件夹下的所有图片并显示在页面. 技术分析: 存在问题 Html中file标签获取到的路径时相对的. Html中Img指定源时需要的是绝对路径. ...

  2. 自动展示目录下的图片html,Html读取本地文件夹下图片并显示

    一 目的 在Html上选择本地文件夹,自动读取文件夹及子文件夹下的所有图片并显示在页面. 技术分析: 存在问题 Html中file标签获取到的路径时相对的. Html中Img指定源时需要的是绝对路径. ...

  3. 服务器怎么打开本地电脑文件夹,如何在云服务器上打开本地文件夹

    如何在云服务器上打开本地文件夹 内容精选 换一换 Tomcat是一个被广泛使用的Java Web应用服务器.本文介绍了在华为云弹性云服务器上部署Java Web环境的操作步骤.首先需要下载部署Java ...

  4. win7打开计算机 多窗口,win7电脑无法在一个窗口中打开多个文件夹怎么办?

    之前小编曾经听说过,很多朋友都无法忍受IE浏览器,就是因为IE浏览器每打开一个网址,就会新弹出一个窗口,那也就是说,咱们多打开几个窗口的话,下面的任务栏窗口岂不是就密密麻麻了?如果这样的操作大家受不了 ...

  5. 小爬虫爬取小猫咪图片并存入本地文件夹

    小爬虫爬取小猫咪图片并存入本地文件夹 本人是安徽工业大学电气与信息工程学院研一学生,最近还不能开学真的是很糟心哦,由于自己比较笨吧,起步较晚还要忙着学习机器学习还有计算机视觉,但是总学这个感觉很闷也没 ...

  6. 桌面文件夹和计算机打不开怎么办,电脑双击鼠标无法打开桌面文件或文件夹怎么办...

    我们在使用电脑的时候,都知道一个最基本的常识,就是打开软件必须需要双击图标,然后程序就会自动运行,但是有时候我们双击却意外弹出了程序的属性界面,不能直接打开,必须右击程序,选择打开程序才能运行程序,这 ...

  7. 打开计算机 硬盘显示空白,电脑上文件夹的查看选项显示空白如何解决

    电脑上文件夹的查看选项显示空白如何解决 腾讯视频/爱奇艺/优酷/外卖 充值4折起 我们在使用电脑的时候,总会遇到这样那样的问题,今天就跟大家介绍一下电脑上文件夹的查看选项显示空白的具体解决方法. 1. ...

  8. 织梦站内选择文件夹和图片文件排序后台模板管理按名称排序

    织梦站内选择图片排序是直接read()读取直接输出,如果我们同一时间上传了多个图片,在没有经过排序的情况下,我们去选择图片很难快速分辨哪个是刚刚上传的,解决方法是读取该目录的文件列表,用"文 ...

  9. vue+springboot-前台怎么回显本地文件夹下的图片

    如果你想在前端回显本地文件夹下的图片,那么你就要在上传图片的时候将图片上传的路径设置成后台项目文件夹的路径,在浏览器输入地址即可访问.上传到服务器的我就先不举例了. 图片上传的位置: 后台端口:818 ...

最新文章

  1. 导航选中后标记的样式实现滑动效果
  2. Android拼图游戏
  3. 【机器学习】机器学习必知概念
  4. C语言打包解包文件程序(简易版)
  5. 二分匹配最大匹配的理解(附图解)
  6. Gradle插件学习笔记(二)
  7. Spring 是如何解决循环依赖的?
  8. object-c 中括号[]
  9. sms 2003 Service Pack 3 Open Beta
  10. Linux常用基本命令( rmdir, rm, mv )
  11. 苹果Mac Finder 替代工具:Path Finder
  12. 第三方魔兽金币交易平台的影响力会很快地褪去
  13. 路由器的硬件测试软件,路由器也跑分?路由器测试App路小胖体验
  14. .NET Core 新手上路
  15. vue 描述框[el-descriptions] 与之对应 div
  16. MySQL性能调优-使用ROLLUP代替UNION ALL
  17. hbase —— Dead Region Servers
  18. 操作系统课程设计-二级文件系统,Windows平台版本,c语言
  19. 快速了解sealed关键字
  20. 手机电话号码吉凶查询原理及ASP算法源码 转

热门文章

  1. 基于Python3(Autosub)以及Ffmpeg配合GoogleTranslation(谷歌翻译)为你的影片实现双语版字幕(逐字稿)
  2. vue中获取本地IP地址
  3. 更简单的非递归遍历二叉树
  4. FTP电脑间传输文件
  5. 原理探究:Spring @Value注解详解
  6. 对结构体数组数组进行赋值
  7. 微信小程序仿照微信拖动缩放图片和截取头像
  8. C3D-network论文笔记
  9. UWB_安信可NodeMCU-BU01的使用
  10. Cannot create an instance of class AndroidViewModel (androidx ViewModelProvider AndroidViewModel)