zoukankan      html  css  js  c++  java
  • 使用了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文件夹下

    具体目录为:…EditorDataMonolibmono2.0System.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 != 0)
            {
                if (bytes != null)
                {
                    File.WriteAllBytes(path + "/" + time + ".png", bytes);
                }
            }

    效果图如下:

    EY80%`]GBC{)26S_~J5L5NX

    PS:这个对话框好丑,可毕竟是Unity提供的dll文件,跪着也要用吧。。

  • 相关阅读:
    mvp在flutter中的应用
    Flutter 网络请求库http
    Flutter Dart中的异步
    阿里云 RDS 数据库又发 CPU 近 100% 的“芯脏病”团队
    上周热点回顾(10.14-10.20) 团队
    云上的芯脏病:奇怪的阿里云 RDS 数据库突发 CPU 近 100% 问题团队
    【故障公告】docker swarm 集群问题引发的故障团队
    上周热点回顾(10.7-10.13)团队
    上周热点回顾(9.30-10.6) 团队
    上周热点回顾(9.23-9.29) 团队
  • 原文地址:https://www.cnblogs.com/fws94/p/6807840.html
Copyright © 2011-2022 走看看