【发布时间】:2016-09-21 14:56:13
【问题描述】:
我想在运行时使用 Unity 加载多个 png 文件。我正在使用 www 类加载具有给定目录的纹理。这是我的代码:
public IEnumerator LoadPNG(string _path)
{
string[] filePaths = Directory.GetFiles(_path);
foreach (string fileDir in filePaths)
{
using (WWW www = new WWW("file://" + Path.GetFullPath(fileDir )))
{
yield return www;
Texture2D texture = Texture2D.whiteTexture;
www.LoadImageIntoTexture(texture);
this.textureList.Add(texture);
}
}
}
这个函数被称为协程。当程序完成加载所有纹理时,textureList 数组具有正确数量的纹理。但所有这些都是最后加载的纹理。任何帮助表示赞赏。
【问题讨论】:
-
使用这条线 (Texture2D texture = Texture2D.whiteTexture;) 你总是将你的引用设置为同一个对象。你必须初始化一个新的纹理。我认为(新的 Texture2D)它会起作用
-
没有资源就不能直接统一说new Texture2D。我已经通过 LoadImageIntoTexture 纹理覆盖了纹理变量。所以我认为这应该不是问题。
-
@mcelik 您可以将
new关键字与Texture2D一起使用,我认为这是您的问题,因为您更新了代码。Texture2D texture = new Texture2D(4, 4, TextureFormat.DXT1, false); -
你们俩都是对的。抱歉,我在没有足够知识的情况下跳入了答案。使用新的 Texture2D 解决了这个问题。但我不明白为什么它会起作用?
标签: c# unity3d textures ienumerator