[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版权协议,转载请附上原文出处链接和本声明。