• 使用了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文件,跪着也要用吧。。

  • 相关阅读:
    010 --- 第14章 观察者模式
    009 --- 第13章 建造者模式
    008 --- 第12章 外观模式
    007 --- 第10章 模板方法模式
    006 --- 第9章 原型模式
    redis lua 中keys[1] 和argv[1] 的理解
    redis 入门总结
    mysql 8.0 特性简单总结
    MySql事务隔离级别 浅见
    浅谈Java中的String、StringBuffer、StringBuilder
  • 原文地址:https://www.cnblogs.com/fws94/p/6807840.html
Copyright © 2020-2023  润新知