Unity_从本地选择图片上传并加载方法

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
    public class FileOpenDialog
    {
        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 class DialogOpen
    {
        [DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]
        public static extern bool GetOpenFileName([In, Out] FileOpenDialog dialog);

        [DllImport("user32.dll")]
        public static extern IntPtr GetForegroundWindow();
    }
public class DrawPaintMgr : MonoBehaviour
    {
        public Renderer renderer;

        public Text txt;

        private void Start()
        {
            FileOpenDialog dialog = new FileOpenDialog();
            dialog.structSize = Marshal.SizeOf(dialog);
            dialog.filter = "图片文件(*.jpg,*.png,*.bmp)\0*.jpg;*.png;*.bmp";
            dialog.file = new string(new char[256]);
            dialog.maxFile = dialog.file.Length;
            dialog.fileTitle = new string(new char[64]);
            dialog.maxFileTitle = dialog.fileTitle.Length;
            dialog.initialDir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            dialog.title = "SFramework_Pro 2.0 FOR SIMON";
            dialog.defExt = "exe"; //显示文件的类型
            dialog.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;
            dialog.dlgOwner = DialogOpen.GetForegroundWindow();

            if (DialogOpen.GetOpenFileName(dialog)) StartCoroutine(GetAndLoadTexture(dialog.file));
        }
        private IEnumerator GetAndLoadTexture(string path)
        {
            var request = UnityWebRequestTexture.GetTexture(path);
            yield return request.SendWebRequest();
            if (request.isHttpError || request.isNetworkError) throw new Exception(request.error);
            var material = new Material(Shader.Find("Standard"))
                {mainTexture = DownloadHandlerTexture.GetContent(request)};
            renderer.material = material;
        }
    }


版权声明:本文为qq_33257500原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。