【问题标题】:How can I add an image into a list in Unity C#?如何在 Unity C# 中将图像添加到列表中?
【发布时间】:2017-06-23 02:11:51
【问题描述】:

我正在尝试将多个图像文件夹索引到多个列表中。目前,我正在尝试使用System.IODirectoryInfoFileInfo 来执行此操作,但我的列表类型是Texture2D,因此无法转换它们。那么如何将这些图像添加到列表中呢?

相关代码:

    using UnityEngine.UI;
    using System.IO;

    public List<Texture2D> daytimeImages = new List<Texture2D>();

    private void Start() {
        DirectoryInfo daytimeDirectory = new DirectoryInfo(daytimePath);
        FileInfo[] daytimePictures = nighttimeDirectory.GetFiles();
        foreach (FileInfo file in nighttimePictures)
        {
            daytimeImages.Add(file);
        }
    }

【问题讨论】:

  • Keyur 的答案应该这样做,但请为代码添加某种保护,以便仅加载图像文件(jpg,png...)。您问题中的代码只会获取该文件夹中的每个文件。请参阅this 答案以了解如何执行此操作。

标签: c# unity3d


【解决方案1】:

来自here的答案之一

这个函数可以帮助你,它使用LoadImage函数将图像从文件路径转换为Texture2d:

public static Texture2D LoadImage(string filePath) 
{
    Texture2D tex = null;
    byte[] fileData;

    if (File.Exists(filePath))     //you can skip this since you are only passing files that exist
    {
        fileData = File.ReadAllBytes(filePath);
        tex = new Texture2D(2, 2);
        tex.LoadImage(fileData);
    }
    return tex;
}

您可以按如下方式使用它(编辑添加.FullName

foreach (FileInfo file in nighttimePictures)
{
    daytimeImages.Add(LoadImage(file.FullName));  //edited
}

【讨论】:

  • 尝试给我一个错误,它无法将 FileInfo 转换为 foreach 循环中的字符串。
  • 查看我的编辑,我忘了从 FileInfo 中提取文件路径。
猜你喜欢
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多