gpt4 book ai didi

c# - 构建后Unity3D加载资源

转载 作者:行者123 更新时间:2023-11-30 23:28:23 26 4
gpt4 key购买 nike

我有许多图像集 (PNG),它们放置在项目 Assets 的 Resources 文件夹内的不同子文件夹中。在编辑器上工作时,我可以毫无问题地从不同的子文件夹加载图像,只需简单地使用 Resources.Load() 命令并提供我指定的特定图像的路径m 尝试加载,例如:

firstLeftCC = Resources.Load("Case2/Left/CC/IMG-0004-00001", typeof(Texture2D)) as Texture2D;

本例中图片“IMG-0004-00001”放在CC文件夹中,CC文件夹在Left文件夹中,Left文件夹在Case2文件夹中,最后Case2文件夹在资源文件夹。

但是在构建项目之后,对于 Windows 应用程序,当我运行 .exe 文件时,它不会加载任何这些图像。经过一些研究,问题似乎与 Resources 中子文件夹的存在有关,因为构建中不存在为 Resources.Load() 函数提供的用于加载图像的路径。

我想知道是否有人知道这个问题的解决方案,或者是否可以从给定文件夹加载图像而不是尝试从 Resources 文件夹加载它们。

在此先感谢您的帮助。

最佳答案

可选 在运行时加载 PNG 文件的方法。您可以在开发期间将 Case2 保留在 Assets 文件夹中。 为 Windows 构建后,转到 exe 构建文件所在的文件夹。假设它名为 Game.exe。在 Game.exe 可执行文件所在的同一目录中将有一个名为 Game_Data 的文件夹。

复制Case2文件夹到Game_Data文件夹。

它现在应该是这样的.... Game_Data/Cas​​e2/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;

关于c# - 构建后Unity3D加载资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36016350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com