美文网首页unitycsharp
Unity 3D OpenFileDialog / SaveFi

Unity 3D OpenFileDialog / SaveFi

作者: 雨落随风 | 来源:发表于2019-06-08 04:43 被阅读29次

在本文,笔者将教大家如何置顶打包好后的(Runtime) 文件选择/保存 窗口。

前言:

有不少童靴发现 网络上给的 OpenFileDialog 解决方案无法将这个弹出的窗口置顶,这就导致了用户点到了UnityPlayer窗口就会导致 这个 OpenFileDialog 窗口被 Player覆盖。要命的是,如果这个是全屏APP,那个体验就真的非常难受了。
所以解决这个问题就迫在眉睫了!

问题脚本

using System;
using System.Runtime.InteropServices;
 
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
 
public class OpenFileName {
    public int      structSize = 0;
    public IntPtr   dlgOwner = IntPtr.Zero;
    public IntPtr   instance = IntPtr.Zero;
    public String   filter = null;
    public String   customFilter = null;
    public int      maxCustFilter = 0;
    public int      filterIndex = 0;
    public String   file = null;
    public int      maxFile = 0;
    public String   fileTitle = null;
    public int      maxFileTitle = 0;
    public String   initialDir = null;
    public String   title = null;
    public int      flags = 0;
    public short    fileOffset = 0;
    public short    fileExtension = 0;
    public String   defExt = null;
    public IntPtr   custData = IntPtr.Zero;
    public IntPtr   hook = IntPtr.Zero;
    public String   templateName = null;
    public IntPtr   reservedPtr = IntPtr.Zero;
    public int      reservedInt = 0;
    public int      flagsEx = 0;
}

解决方案:

    public FileOpenDialog()
    {
        dlgOwner = GetForegroundWindow();
    }

    [DllImport("user32.dll")]
    public static extern IntPtr GetForegroundWindow();

Tips:
在这个FileOpenDialog 类型中加一个构造函数,然后写上这一句问题解决,赶快试下吧~

动画演示:

  • 演示了置顶效果
  • 在编辑器下有震屏和提示音,但打包就没了。

扩展阅读:

标签:Unity Runtime使OpenFileDialog始终位于所有窗口的最前面,OpenFileDialog 置顶,SaveFileDialog

相关文章

网友评论

    本文标题:Unity 3D OpenFileDialog / SaveFi

    本文链接:https://www.haomeiwen.com/subject/wcpbxctx.html