我有许多图像(PNG)组,分别放置在Resources
项目资产上的文件夹内的不同子文件夹中。在编辑器上工作时,我可以简单地使用Resources.Load()
命令并提供要尝试加载的特定图像的路径来从不同的子文件夹加载图像,例如:
firstLeftCC = Resources.Load("Case2/Left/CC/IMG-0004-00001", typeof(Texture2D)) as Texture2D;
在此示例中,图像“ IMG-0004-00001”位于CC文件夹中,CC文件夹位于Left文件夹中,Left文件夹位于Case2文件夹中,最后Case2文件夹位于Resources文件夹中。
但是在构建项目之后,对于Windows应用程序,当我运行.exe
文件时,它不会加载任何这些图像。经过研究后,问题似乎与Resources中子文件夹的存在有关,因为在构建中不存在指定给Resources.Load()函数加载图像的路径。
我想知道是否有人知道此问题的解决方案,或者是否有可能从给定的文件夹中加载图像,而不是尝试从Resources文件夹中加载图像。
在此先感谢您的帮助。
在运行时加载PNG文件的可选方法。您可以在开发过程中将Case2保留在Asset文件夹中。为Windows构建之后,转到exe构建文件所在的文件夹。假设它称为Game.exe。在Game.exe可执行文件所在的相同目录中,将存在一个名为Game_Data的文件夹。
复制的情况2文件夹复制到Game_Data文件夹。
现在应该看起来像这样.... Game_Data/Case2/Left/CC/IMG-0004-00001.PNG
现在用下面的代码,你可以轻松地阅读你的PNG与下面的代码文件:
Texture2D firstLeftCC = null;
byte[] imageBytes;
string imagePath = Application.dataPath + "/Case2/Left/CC/IMG-0004-00001.PNG";
if (File.Exists(imagePath))
{
Debug.Log("Exist");
imageBytes = File.ReadAllBytes(imagePath);
firstLeftCC = new Texture2D(10, 10);
firstLeftCC.LoadImage(imageBytes);
}
现在,您可以自由地将firstLeftCC用作Texture2D
注意:Unity为Assets目录中的每个文件/文件夹创建.meta文件/文件夹。当您复制目录时,IMG-0004-00001.PNG将具有另一个名为IMG-0004-00001.PNG.meta的文件。在开发过程中,您不应该将Case2文件夹放置在Assets文件夹中,或者您必须自己删除它们。
包括 using System.IO;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句