第二步 开始打开Unity做了,查资料写代码~ 1.导入图片 显示图片,只需要弄个背景图,然后在上面用2D的UI放上八上Image即可 重点在于要导入自己的八张图,这里主要借助Windows的API了,好在Unity提供了调用DLL的方法。 可以查看下面的Blog操作,我就不重复写了,只写差异化的东西。 http://www.cnblogs.com/U-tansuo/archive/2012/07/10/GetOpenFileName.html 在这里遇到一个问题是上面Blog中没法打开多个文件。 来看一下OpenFileName的结构 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;}
问题主要出在file这个记录文件名的变量上,查看了一下MSDN,这个变量在只打开一个文件时是存了文件的文件夹路径+文件名的, 但是当你多选的时候,它是存了多个隔开的内容的,最前面的是文件夹路径,后面是选择的文件名字。而用string读取时,直接就只取 到了最前面的文件夹路径名。就此要把它转为指针(IntPtr),然后再去读取。 Liststring selectedFilesList = new Liststring(); long pointer = (long)ofn.file;string file = Marshal.PtrToStringAuto(ofn.file); // Retrieve file nameswhile (file.Length 0) { selectedFilesList.Add(file); pointer += file.Length * 2 + 2; ofn.file = (IntPtr)pointer; file = Marshal.PtrToStringAuto(ofn.file);} string[] slectedfileNames = GetFileNamesByFileList(selectedFilesList); for (int i = 0; i slectedfileNames.Length; i++){ StartCoroutine(WaitLoad(slectedfileNames, i));}