最近在研究如何在Unity中調(diào)用系統(tǒng)窗口獲取文件路徑绿鸣,或者保存文件路徑鹃祖。
百度了許多,發(fā)現(xiàn)大部分都是靠windows.form.dll調(diào)用DLL的方法目尖,但封裝的不好拓哺,存在雖然能調(diào)用勇垛,但窗體不能永遠(yuǎn)置頂?shù)膯?wèn)題,點(diǎn)其他界面士鸥,窗口會(huì)被最小化闲孤。所以我就轉(zhuǎn)向國(guó)外的論壇找,最終終于找到一個(gè)Github上提供的C#方案烤礁,封裝的特別好讼积,功能也特別齊全,不僅支持Win脚仔,還支持mac與webgl所以特別方便勤众。
下面放出Git地址
https://github.com/gkngkc/UnityStandaloneFileBrowser
當(dāng)你下載完成后,把文件夾導(dǎo)入你的工程鲤脏。
如果你是?Windows記得把Unity與DLL設(shè)置如下
然后他所有封裝的方法都在SFB這個(gè)命名空間下们颜。
然后調(diào)用StandaloneFileBrowser這個(gè)類下面一共有這幾個(gè)方法,分別是調(diào)用打開文件窗口猎醇、打開文件夾窗口窥突,打開保存文件窗口。
帶有Async都需要給方法傳遞一個(gè)回調(diào)的函數(shù)硫嘶,在函數(shù)執(zhí)行完后進(jìn)行回調(diào)阻问。
下面我就以O(shè)penFilePanelAsync這個(gè)方法舉例
String[]?OpenFilePanelAsync(string 窗口標(biāo)題,string 默認(rèn)打開文件夾路徑沦疾,指定拓展名称近,bool 是否允許多選,action<string[]> cb回調(diào))
下面是代碼
-----------------------------------------------------------------------------------------------
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using SFB;
public class test : MonoBehaviour {
????// Use this for initialization
????void Start () {
????}
????// Update is called once per frame
????void Update () {
????????if(Input.GetKeyDown(KeyCode.Space)){
????????????StandaloneFileBrowser.OpenFilePanelAsync("打開的窗口",Application.dataPath,"txt",false,(paths)=>{foreach (var item in paths)
????????????{
????????????????Debug.Log(item);
????????????}});
????????}
????}
}
如圖為調(diào)用的程序效果曹鸠,窗口不會(huì)被最小化就算點(diǎn)擊其他區(qū)域煌茬,很好用。