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 filtervar 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 filtervar extensions = new[] {new ExtensionFilter("Image Files", "png", "jpg", "jpeg" )};

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

多条件过滤,

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从三大层次学习企业架构框架TOGAF

目录 前言 掌握TOGAF的三个层次 层次1&#xff1a;怎么学&#xff1f; 层次2&#xff1a;怎么用&#xff1f; 层次3&#xff1a;怎么思&#xff1f; 结束语 前言 对于一名架构师来讲&#xff0c;如果说编程语言是知识库层次中的入门石&#xff0c;那么企业架构框架则相当…

CCF PTA 2022年7月C++研究生入学考试

【问题描述】 一年一度的研究生入学考试结束了&#xff0c;招生办的老师打算对所有的考生进行 成绩排名&#xff0c;从而确定复试的名单。排名的规则如下&#xff1a; (1)以入学考试的平均成绩 作为排名的依据&#xff08;分数均为整数&#xff09;&#xff1b; (2)对于考生…

cesium加载倾斜影像数据(模拟雨、雪、雾、无人机飞行、测距、箭头标绘、电子围栏等)

实现效果如下&#xff1a; 功能菜单如下&#xff1a; 加载倾斜影像核心代码&#xff1a; var palaceTileset new Cesium.Cesium3DTileset({url: http://127.0.0.1:9002/tileset.json,//控制切片视角显示的数量&#xff0c;可调整性能maximumScreenSpaceError: 0.1,maximumNum…

问题:如何避免子组件传入相同对象时更新

场景 我有一个父组件&#xff0c;里面包含一个子组件&#xff0c;子组件传入了一个对象&#xff0c;假设对象是字面量。当我的父组件更新时&#xff0c;子组件也会更新。导致不必要的渲染。 一些尝试 1.通过使用React.memo包裹子组件&#xff0c;作用是父组件更新&#xff0…

python/pygame 挑战魂斗罗 笔记(三)

感觉最难的部分已经解决了&#xff0c;下面开始发射子弹。 一、建立ContraBullet.py文件&#xff0c;Bullit类&#xff1a; 1、设定子弹速度 Config.py中设定子弹移动速度为常量Constant.BULLET_SPEED 8。 2、载入子弹图片&#xff1a; 图片也是6张&#xff0c;子弹发出后…

【MySQL面试题pro版-8】

MySQL是一个关系型数据库管理系统&#xff0c;由瑞典 MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的RDBMS (Relational Database Management System&#xff0c;关系数据…

Swagger3 使用示例

Swagger3 使用示例 GET 请求&#xff0c;传递 query-string 参数 Operation(summary "GET 请求", description "GET 请求传递 query-string 参数", tags {"用户管理"}) GetMapping(value "/get-query-string", produces "…

2236: 【数学】 回文质数

题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的)&#xff0c;所以 151 是回文质数。 写一个程序来找出范围[a,b](5 < a < b < 10,000,000)间的所有回文质数; 输入 二个整数 a 和 b . 输出 输出一个回文质数的列表&#xff0c;一行一…

成为程序员后你都明白了什么?

成为程序员后你都明白了什么&#xff1f; 自成为一名程序员以来&#xff0c;我的职业生涯就如同一段充满挑战与收获的旅程。在这段长达七年的时光里&#xff0c;我从一名初出茅庐的新手&#xff0c;历经多次角色转换&#xff0c;直至现在成为一家创业公司的技术负责人&#xf…

OceanBase数据库日常运维快速上手

这里为大家汇总了从租户创建、连接数据库&#xff0c;到数据库的备份、归档、资源配置调整等&#xff0c;在OceanBase数据库日常运维中的操作指南。 创建租户 方法一&#xff1a;通过OCP 创建 确认可分配资源 想要了解具体可分配的内存量&#xff0c;可以通过【资源管理】功…

Unity 对APK签名

关键代码 PS D:\UnityProject\YueJie> jarsigner -verbose -keystore D:\UnityProject\YueJie\user.keystore -signedjar D:\UnityProject\YueJie\meizuemptyapk-release-signed.apk D:\UnityProject\YueJie\MeizuEmpty-release-unsigned.apk 1 示例 # jarsigner的命令格…

【C++从练气到飞升】08---模板

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书。 目录 一、泛型编程 什么是泛型编程: 二、函数模板 1. 函数模板概念 2. 函数模板格式 3. 函数模板的原理 4. 函数模板的实例…

JAVA学习-并发.线程状态

一、Java中的线程状态可以分为以下五类&#xff1a; 1. 新建&#xff08;New&#xff09;状态&#xff1a; 当我们创建一个Thread对象时&#xff0c;它的状态是新建状态&#xff0c;表示该线程对象已被创建但还没有启动执行。 2. 运行&#xff08;Runnable&#xff09;状态&…

❤ vue 使用原生组件

❤ vue 使用原生组件 1、input输入框 ① 想让我们的input输入框类型为时间&#xff0c;只需要为我们的输入框简单的加一个类型的type即可 <input type"date" id"birthday" name"birthday" placeholder"年/月/日"> 我们还可以…

Ubuntu 传输文件

scp [选项] 源文件 目标路径 以下是一些常用的 scp 命令选项&#xff1a; -r&#xff1a;递归复制目录和子目录。 -P&#xff1a;指定远程 SSH 服务器的端口号。 -i&#xff1a;指定用于身份验证的私钥文件。 -p&#xff1a;保留源文件的时间戳、权限和所有者。 -v&#x…

element-ui合计逻辑踩坑

element-ui合计逻辑踩坑 1.快速实现一个合计 ​ Element UI所提供的el-table中提供了方便快捷的合计逻辑实现&#xff1a; ​ https://element.eleme.cn/#/zh-CN/component/table ​ 此实现方法在官方文档中介绍详细&#xff0c;此处不多赘述。 ​ 这里需要注意&#xff0c…