使用了UnityEditor中的API,打包时却不能打包UnityEditor的问题
前段时间写了一篇名叫《Unity使用Windows弹窗保存图片》的文章
然而现在项目进入了测试阶段
就在发布的时候,这个地方出问题了
问题出在using UnityEditor;
如上文章介绍,我们使用了SaveFilePanel这个API来获取用户选择的地址
而这个API属于EditorUtility类,而这个类又隶属于UnityEditor这个命名空间
然而要使用这个命名空间,就必须引入using UnityEditor;
但是此命名空间是Unity在编辑器模式下才可以使用的库
也就是说,打包时使用UnityEditor的脚本是会报错的
(好歹还报个错,告诉了你死是在哪儿死的)
这就陷入了两难的境地,
API必须要用,库决不能引入
查了好多资料后,才找到了一个解决方案
如下:
首先,删掉using UnityEditor库
然后引入using System.Windows.Forms;
引入此库,需要在Asset/Plugin文件夹下放入名为System.Windows.Forms.dll的文件
此文件可在Unity的安装目录中查找,然后复制到Plugin文件夹下
具体目录为:…\Editor\Data\Mono\lib\mono\2.0\System.Windows.Forms.dll
接下来,就可以在脚本中成功引入using System.Window.Forms库
然后换一种获取用户选择的路径的方式
string path = string.Empty;
FolderBrowserDialog dialog = new FolderBrowserDialog();
dialog.Description = "请选择想要保存的路径";
if (dialog.ShowDialog() == DialogResult.OK)
{
path = dialog.SelectedPath;
}
此方法便将用户选择的路径保存在了path中
然后使用File.WriteAllBytes就可以搞定了
if (path.Length != )
{
if (bytes != null)
{
File.WriteAllBytes(path + "/" + time + ".png", bytes);
}
}
效果图如下:

PS:这个对话框好丑,可毕竟是Unity提供的dll文件,跪着也要用吧。。
使用了UnityEditor中的API,打包时却不能打包UnityEditor的问题的更多相关文章
- MAVEN打包时没有将src/main/cache文件夹打到到WAR包中
某项目中ehcache配置文件写在src/main/cache中,结果用maven打包时,得到的WAR包里面没有这个文件夹 因为maven打包时默认只打包src/main/java中的文件和src/m ...
- 转发:maven打包时始终出现以下提示:-source 1.3 中不支持泛型(请使用 -source 5 或更高版本以启用泛型)
maven打包时始终出现以下提示: 1.-source 1.3 中不支持泛型(请使用 -source 5 或更高版本以启用泛型)List<User> userList= new Array ...
- 关于android源码中的APP编译时引用隐藏的API出现的问题
今天在编译android源码中的计算器APP时发现,竟然无法使用系统隐藏的API,比如android.os.ServiceManager中的API,引用这个类时提示错误,记忆中在android源码中的 ...
- idea中 maven打包时时报错User setting file does not exist C:\Users\lenevo\.m2\setting.xml,
第一种错误 :idea中 maven打包时时报错User setting file does not exist C:\Users\lenevo\.m2\setting.xml, 解决方案如下:将ma ...
- maven 打包时动态替换properties资源文件中的配置值
pom build节点下面添加resource配置: <resources> <resource> <directory>src/main/resources/&l ...
- 记录一次maven打包时将test目录下的类打包到jar中,Maven Assembly Plugin的使用
今天有人问我打包后找不到主类,运行的类写在test中.按照常规,test目录下的文件不会打包到jar包中.(但是我测试一个springboot工程就可以,这里之后再研究) 具体解决如下 第一步:在po ...
- maven打包时无法识别lombok中@Data生成的get set方法
开发中使用了lombok,在使用maven编译打包时发现识别不了lombok通过注解@Data在实体类中生成的get,set方法.通过在网上的一篇博客找到了解决的办法,将maven-compiler- ...
- maven中把依赖的JAR包一起打包
<buizld> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId ...
- 利用Maven打包时,如何包含更多的资源文件
首先,来看下MAVENx项目标准的目录结构: 一般情况下,我们用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面,利用maven打包时,ma ...
随机推荐
- TCP协议之三次握手与四次挥手
TCP协议是TCP/IP体系中核心一个协议,该协议比起IP协议,ICMP协议,UDP协议都更复杂,因此这篇文章主要分析TCP协议在建立连接和断开连接的时候,状态转移以及报文段的内容. 下面,先放一张T ...
- 提交任务到Spark
1.场景 在搭建好Hadoop+Spark环境后,现准备在此环境上提交简单的任务到Spark进行计算并输出结果.搭建过程:http://www.cnblogs.com/zengxiaoliang/p/ ...
- iOS开发之类扩展
在以往写代码时,我们经常是把声明写在.h文件中,把实现写在.m文件中,但是在实际开发中,如果把声明写在.h文件中会暴露程序很多属性(成员变量.成员变量的get和set方法),为了安全考虑,引入了类扩展 ...
- 初识 Javascript.02 -- Date日期、Math对象、数据类型转换、字符串、布尔Boolean、逻辑运算符、if else 、三元表达式、代码调试方法、
Date()对象: Date对象用于处理日期和时间. 1.1 Math对象 ◆Math.ceil() 天花板函数 向上取整 只取整数,不足则进1 ◆Math.floor() 地板函数 ...
- CSS.03 -- 浏览器行高、字体;盒子模型--边框、内边距、外边距
如果此时你也在自学中,请使用 FireWorks CS6 进行切图测距等,百度一下吧~ Fireworks的基本使用 新建文件 ctrl+n 打开文件 ctrl+o 调出和隐藏标尺 ctrl+r ...
- Redis数据迁移方案
场景 Redis实例A ---> Redis实例B,整库全量迁移 方案一: mac环境 brew install npm npm install redis-dump -g 针对RedisA: ...
- Jquery EasyUI远程校验,Jquery EasyUI多个自定义校验,EasyUI自定义校验
>>>>>>>>>>>>>>>>>>>>>>>>> ...
- OpenStack_Glance
什么是Glace Glance即image service(镜像服务),就是为创建虚拟机提供镜像的地方 为什么要有Glance 这个问题问的好,openstack就是构建Iaas平台对外提供虚拟机的啊 ...
- Java的标识符,数据类型与各种运算符
一.标识符 用作给变量.类和方法命名 java强调标识符有如下命名规则: 标识符必须以字母,下划线_,美元$开头 标识符其他部分可以是字母,下划线"_",美元符"$&qu ...
- Laravel Session 遇到的坑
这两天遇到了一个很奇怪的问题,更新session ,session的值不变.经过一番追查,终于找到问题,并搞明白了原理.写这篇博客记录下. 框架版本 Laravel 5.4 问题 先来描述下问题,我在 ...