前段時間寫了一篇名叫《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); } }
效果圖如下:
PS:這個對話框好丑,可畢竟是Unity提供的dll文件,跪着也要用吧。。