Unity Standalone File Browser,Unity打开文件选择器

Unity Standalone File Browser,Unity打开文件选择器

下载地址:GitHub链接:

https://github.com/gkngkc/UnityStandaloneFileBrowser

简单的示例代码

using SFB;
using System;
using System.IO;
using UnityEngine;
using UnityEngine.UI;

public class NewBehaviourScript : MonoBehaviour
{
   /// <summary>
   /// 用于显示图片的image
   /// </summary>
   public Image myimage;

   /// <summary>
   /// 图片选择按钮
   /// </summary>
   public Button btnSelect;

   /// <summary>
   /// 图片读取按钮
   /// </summary>
   public Button btnRead;

   private void Start()
   {
       btnSelect.onClick.AddListener(OnSelectImageButtonClicked);
       btnRead.onClick.AddListener(LoadAndDisplayBase64Image);
   }

   public void OnSelectImageButtonClicked()
   {

       //        // Open file with filter
       //        var extensions = new[] {
       //    new ExtensionFilter("Image Files", "png", "jpg", "jpeg" ),
       //    new ExtensionFilter("Sound Files", "mp3", "wav" ),
       //    new ExtensionFilter("All Files", "*" ),
       //};


       // Open file with filter
       var extensions = new[] {
   new ExtensionFilter("Image Files", "png", "jpg", "jpeg" )};


       string[] paths = StandaloneFileBrowser.OpenFilePanel("Select Image", "", extensions, false);

       if (paths.Length > 0)
       {
           string imagePath = paths[0];
           byte[] imageData = File.ReadAllBytes(imagePath);

           // 将图像数据转换为Base64字符串
           string base64ImageString = Convert.ToBase64String(imageData);

           // 将Base64字符串写入文本文件
           File.WriteAllText(Application.streamingAssetsPath + "/image_data.txt", base64ImageString);
       }
   }

   public void LoadAndDisplayBase64Image()
   {
       if (File.Exists(Application.streamingAssetsPath + "/image_data.txt"))
       {
           // 从文件读取Base64字符串
           string base64ImageString = File.ReadAllText(Application.streamingAssetsPath + "/image_data.txt");

           // 将Base64字符串解码回字节数组
           byte[] imageData = Convert.FromBase64String(base64ImageString);

           // 创建Texture2D并加载图像数据
           Texture2D texture = new Texture2D(100, 100);
           texture.LoadImage(imageData);

           // 将Texture2D转换为Sprite并设置到Image组件上
           myimage.sprite = CreateSpriteFromTexture(texture);
       }
   }

   private Sprite CreateSpriteFromTexture(Texture2D texture)
   {
       Rect rect = new Rect(0, 0, texture.width, texture.height);
       Vector2 pivot = new Vector2(0.5f, 0.5f);
       return Sprite.Create(texture, rect, pivot);
   }
}

场景布局
在这里插入图片描述

代码解析:
引用命名空间: using SFB;
两个按钮实现功能,一个image用于显示图片

        // Open file with filter
        var extensions = new[] {
    new ExtensionFilter("Image Files", "png", "jpg", "jpeg" )};

添加过滤条件,效果如下图,在右下角
在这里插入图片描述

多条件过滤,

        // Open file with filter
        var extensions = new[] {
            new ExtensionFilter("Image Files", "png", "jpg", "jpeg" ),
            new ExtensionFilter("Sound Files", "mp3", "wav" ),
            new ExtensionFilter("All Files", "*" ),
        };

效果在右下角
在这里插入图片描述

选择完毕之后,点击读取按钮会读取上面写如的base64文件,将图片显示到场景中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/539570.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

若依vue中关于字典的使用

文章目录 字典管理页面列表点击某个字典类型展示具体字典数据修改某一条字典数据 字典的应用一般用于select多选框中代码实现根据字典Dict的value获取Label&#xff0c;类似于通过key获得value 源码解析 字典管理页面 列表 点击某个字典类型展示具体字典数据 修改某一条字典数…

【InternLM 实战营第二期-笔记1】书生浦语大模型开源体系详细介绍InternLM2技术报告解读(附相关论文)

书生浦语是上海人工智能实验室和商汤科技联合研发的一款大模型,很高兴能参与本次第二期训练营&#xff0c;我也将会通过笔记博客的方式记录学习的过程与遇到的问题&#xff0c;并为代码添加注释&#xff0c;希望可以帮助到你们。 记得点赞哟(๑ゝω╹๑) 书生浦语大模型开源体系…

机器学习—数据集(二)

1可用数据集 公司内部 eg:百度 数据接口 花钱 数据集 学习阶段可用的数据集&#xff1a; sklearn:数据量小&#xff0c;方便学习kaggle&#xff1a;80万科学数据&#xff0c;真实数据&#xff0c;数据量大UCI&#xff1a;收录了360个数据集&#xff0c;覆盖科学、生活、经济等…

springboot的logback.xml默认配置文件

logback.xml <?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 控制台输出 --><appender name"STDOUT" class"ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:s…

BI数据分析软件:行业趋势与功能特点剖析

随着数据量的爆炸性增长&#xff0c;企业对于数据的需求也日益迫切。BI数据分析软件作为帮助企业实现数据驱动决策的关键工具&#xff0c;在当前的商业环境中扮演着不可或缺的角色。本文将从行业趋势、功能特点以及适用场景等方面&#xff0c;深入剖析BI数据分析软件&#xff0…

JavaScript内置对象

目录 前言: 1.什么是对象: 1.1面向对象是干什么的&#xff1f; 1.1.1封装&#xff1a; 1.1.2继承&#xff1a; 1.1.3多态&#xff1a; 1.2面向过程与面向对象: 1.2.1面向过程&#xff1a; 1.2.2面向对象&#xff1a; 1.3JavaScript中的对象 1.4内置对象&#xff1a; …

文件名乱码危机:数据恢复全攻略

在数字化时代的浪潮中&#xff0c;电脑文件成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;有时我们会突然遭遇一个令人头疼的问题&#xff1a;原本清晰易读的文件名突然变成了乱码。这些乱码文件名不仅让我们无法准确识别文件内容&#xff0c;更可能意味着数据丢…

深耕国际舞台丨拓数派受邀参与美国 Postgres Conference 2024

在北美地区备受瞩目 Postgres Conference 2024 大会将于4月17日在美国 San Jose 希尔顿举行。拓数派作为立足中国的高科技创新企业&#xff0c;也同时致力于国际开源技术和生态的深耕。本次美国 Postgres Conference 2024 大会中&#xff0c;拓数派将作为黄金赞助商&#xff0c…

lv_micropython for ESP32-C3

一、开发平台说明 硬件&#xff1a;立创实战派ESP32-C3开发板。处理器ESP32-C3&#xff08;内置400KB SRAM&#xff09;&#xff0c;无内置FLASH&#xff0c;2.0寸液晶&#xff08;液晶驱动IC:ST7789&#xff0c;触屏驱动IC:FT6336&#xff09;&#xff0c;下载口UART0。 ESP…

采集某新闻网资讯网站保存PDF

网址&#xff1a;融资总额近3亿美元、药明康德押注&#xff0c;这家抗衰老明星公司有何过人之处-36氪 想要抓取文章内容&#xff0c;但是找不到啊&#xff0c;可能是文字格式的问题&#xff0c;也可能文章内容进行了加密。 在元素中查看&#xff0c;window.initialState返回的就…

python实战-含容器运用

目录 1.找出10000以内能被5或6整除&#xff0c;但不能被两者同时整除的数 2.写一个方法&#xff0c;计算列表所有偶数下标元素的和(注意返回值) 3.根据完整的路径从路径中分离文件路径、文件名及扩展名 4.根据标点符号对字符串进行分行 5.去掉字符串数组中每个字符串的空格…

CentOS 网卡ifcfg-eth0 ping不通外网(www.baidu.com)

1、如果确认好就直接激活网卡&#xff01; ifup eth0 2、慢慢找&#xff1a; cd /etc/sysconfig/network-scripts/ ls 找到你的网卡是啥&#xff0c;这里网卡是 ifcfg-eth0 执行1就好了&#xff01;

[蓝桥杯] 岛屿个数(C语言)

提示&#xff1a; 橙色字体为需要注意部分&#xff0c;红色字体为难点部分&#xff0c;会在文章“重难点解答”部分精讲。 题目链接 蓝桥杯2023年第十四届省赛真题-岛屿个数 - C语言网 题目理解 这道题让我们求岛屿个数&#xff0c;那么我们就应该先弄懂&#xff0c;对于一…

使用Docker定时备份数据

文章目录 一、Docker镜像制作二、MySQL数据备份三、Minio数据备份四、数据跨服务器传输五、Nginx日志分割六、Docker启动七、Docker备份日志 一、Docker镜像制作 镜像制作目录 mc下载地址 - rsyncd.conf # https://download.samba.org/pub/rsync/rsyncd.conf.5port 873 uid …

pytorch-多分类实战之手写数字识别

目录 1. 网络设计2. 代码实现2.1 网络代码2.2 train 3. 完整代码 1. 网络设计 输入是手写数字图片28x28&#xff0c;输出是10个分类0~9&#xff0c;有两个隐藏层&#xff0c;如下图所示&#xff1a; 2. 代码实现 2.1 网络代码 第一层将784降维到200&#xff0c;第二次使用…

【Vue3 + ElementUI】表单校验无效(写法:this.$refs[‘formName‘].validate((valid) =>{} ))

一. 表单校验 1.1 template模块 el-form 中 若校验&#xff0c;ref 和 rules 必须要有 <template><div style"padding:20px"><el-form ref"formName" :model"form" :rules"formRules" label-width"120px"…

【opencv】示例-grabcut.cpp 使用OpenCV库的GrabCut算法进行图像分割

left mouse button - set rectangle SHIFTleft mouse button - set GC_FGD pixels CTRLleft mouse button - set GC_BGD pixels 这段代码是一个使用OpenCV库的GrabCut算法进行图像分割的C程序。它允许用户通过交互式方式选择图像中的一个区域&#xff0c;并利用GrabCut算法尝试…

idea项目编译时报错:GC overhead limit exceeded

问题描述 今天idea构建一个新的项目时报错&#xff1a;GC overhead limit exceeded&#xff0c;错误是发生在编译阶段&#xff0c;而不是运行阶段。 ava: GC overhead limit exceeded java.lang.OutOfMemoryError: GC overhead limit exceededat com.sun.tools.javac.resources…

STM32H743VIT6使用STM32CubeMX通过I2S驱动WM8978(2)

接前一篇文章&#xff1a;STM32H743VIT6使用STM32CubeMX通过I2S驱动WM8978&#xff08;1&#xff09; 本文参考以下文章及视频&#xff1a; STM32CbueIDE Audio播放音频 WM8978 I2S_stm32 cube配置i2s录音和播放-CSDN博客 STM32第二十二课&#xff08;I2S&#xff0c;HAL&am…

STM32 串口接收定长,不定长数据

本文为大家介绍如何使用 串口 接收定长 和 不定长 的数据。 文章目录 前言一、串口接收定长数据1. 函数介绍2.代码实现 二、串口接收不定长数据1.函数介绍2. 代码实现 三&#xff0c;两者回调函数的区别比较四&#xff0c;空闲中断的介绍总结 前言 一、串口接收定长数据 1. 函…