[其他] unity打开windows的选择文件路径浏览器后停止update
未解决
5
楼主悬赏蛮牛币
只要在打开文件浏览器后就会停止update,影响到了如果在打开文件浏览器时,拖动unity打包好的exe,就有时候ui会空白显示
  • TestOpenDialog.zip (2020-1-5 22:47 上传)

    5.15 KB, 下载次数: 62

    工程打包上传请大神帮忙看看

    我来回答
    File/Build Settings/Player Settings/Resolution and Presentation下的 Run In Background勾上
    • 板凳 cg末
    • 2020-1-6 10:33:22
    引用: 初恋脸 发表于 2020-1-6 10:17
    File/Build Settings/Player Settings/Resolution and Presentation下的 Run In Background勾上

    不可能管用的
    • 地板 cg末
    • 2020-1-6 10:35:35
    SHBrowseForFolder 这个东西不知道具体原理 和占主线程一样  所以unity就停了
    有一个办法是,点击按钮的时候开启一个新的线程去打开文件夹,点击确定按钮后就会得到相应的路径,然后再Update方法里去使用这个路径加载图片等,但是注意结束线程和Update的开关。
    引用: MN2014mini 发表于 2020-1-6 16:18
    有一个办法是,点击按钮的时候开启一个新的线程去打开文件夹,点击确定按钮后就会得到相应的路径,然后再Up ...

    试过在新线程中用这个的话打不开对话框
    引用: 574780830 发表于 2020-1-6 16:47
    试过在新线程中用这个的话打不开对话框

    之前有用过,可以打开的,不过可能跟你写的打开方式有些不同
    public class DialogTest : MonoBehaviour
    {
        void Start()
        {

            GameObject.Find("Button").GetComponent<Button>().onClick.AddListener(() =>
            {
                Thread childThread = new Thread(OpenDirectory);
                 childThread.Start();
            });

        }

        private void OpenDirectory()
        {
            SelectFilePathDialog dialog = new SelectFilePathDialog();
            SelectFilePathDialog.DialogReturnInfo info = dialog.OpenDialog();
            if (info.isOk)
            {
                Console.WriteLine(info.path);
            }

        }

    }
    这样写有问题吗,这样打不开
    引用: 574780830 发表于 2020-1-7 00:41
    public class DialogTest : MonoBehaviour
    {
        void Start()

    差不多吧,这样试试:

    void Start()
        {
            GameObject.Find("Button").GetComponent<Button>().onClick.AddListener(() =>
            {
                Thread t = new Thread(new ThreadStart(OpenFileTest));
                t.Start();
                //OpenFileTest();
            });
        }

      /// 打开文件夹
        void OpenFileTest()
        {
            OpenFile.Open(str =>
            {
                StartCoroutine(_LoadImage(str));
            }, OpenFile.FileType.png, OpenFile.FileType.jpg);
        }
    引用: MN2014mini 发表于 2020-1-7 11:28
    差不多吧,这样试试:

    void Start()

    OpenFile是啥,我这边没这个东西,还有_LoadImage是啥,也没
    • 11# pjl110
    • 2020-1-8 09:08:53
    是不是runinbackground没勾选
    引用: 574780830 发表于 2020-1-7 23:16
    OpenFile是啥,我这边没这个东西,还有_LoadImage是啥,也没

    这个只是打开文件夹的方法而已,测试一下你的线程是否有开启并执行了,如果还不行那就可能是设置了ulFlags的问题了,可以设置注释掉这个字段看看
    本帖最后由 574780830 于 2020-1-12 15:19 编辑
    引用: MN2014mini 发表于 2020-1-9 21:53
    这个只是打开文件夹的方法而已,测试一下你的线程是否有开启并执行了,如果还不行那就可能是设置了ulFlag ...

    ulFlag注释了就好了,没有要ulFlag和多线程都要的办法吗