最近在研究如何在Unity中调用系统窗口获取文件路径,或者保存文件路径。
百度了许多,发现大部分都是靠windows.form.dll调用DLL的方法,但封装的不好,存在虽然能调用,但窗体不能永远置顶的问题,点其他界面,窗口会被最小化。所以我就转向国外的论坛找,最终终于找到一个Github上提供的C#方案,封装的特别好,功能也特别齐全,不仅支持Win,还支持mac与webgl所以特别方便。
下面放出Git地址
https://github.com/gkngkc/UnityStandaloneFileBrowser
当你下载完成后,把文件夹导入你的工程。
如果你是 Windows记得把Unity与DLL设置如下
然后他所有封装的方法都在SFB这个命名空间下。
然后调用StandaloneFileBrowser这个类下面一共有这几个方法,分别是调用打开文件窗口、打开文件夹窗口,打开保存文件窗口。
带有Async都需要给方法传递一个回调的函数,在函数执行完后进行回调。
下面我就以OpenFilePanelAsync这个方法举例
String[] OpenFilePanelAsync(string 窗口标题,string 默认打开文件夹路径,指定拓展名,bool 是否允许多选,action<string[]> cb回调)
下面是代码
-----------------------------------------------------------------------------------------------
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);
}});
}
}
}
如图为调用的程序效果,窗口不会被最小化就算点击其他区域,很好用。
网友评论