使用了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 != 0)
        {
            if (bytes != null)
            {
                File.WriteAllBytes(path + "/" + time + ".png", bytes);
            }
        }

效果圖如下:

EY80%`]GBC{)26S_~J5L5NX

PS:這個對話框好丑,可畢竟是Unity提供的dll文件,跪着也要用吧。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM