Nano Hash - криптовалюты, майнинг, программирование

Файлы не найдены при поиске в каталоге?

int d = 0;
foreach (string curFile in System.IO.Directory.GetFiles("Content/img/"))
{
    tiles[d] = Content.Load<Texture2D>(curFile);
    d++;
}

У меня есть приведенный выше код, который должен искать в каталоге img и назначать каждый файл массиву tiles[]. Однако, похоже, он ищет файлы .xnb, а не файлы .png, в которых я сохранил изображения. Как я могу это исправить?

01.06.2013

Ответы:


1

Directory.GetFiles(string path) возвращает полный путь к каждому файл в этом каталоге. Поскольку вам нужны только файлы .png, вы должны использовать Directory.GetFiles(string path, string searchPattern), который занимает второй аргумент, определяющий шаблон поиска.

Directory.GetFiles("Content/img/", ".png");

Кроме того, поскольку вы используете массив для tiles, я предвижу, что у вашего кода возникнут проблемы, поскольку вы, вероятно, не знаете, сколько текстур, которые вы собираетесь загрузить из каталога. Вместо этого я предлагаю вам использовать List<T>:

var tiles = new List<Texture2D>();
foreach (var imagePath in System.IO.Directory.GetFiles("Content/img/", ".png"))
{
    tiles.Add( Content.Load<Texture2D>(imagePath) );
}

Вы даже можете немного сходить с ума по LINQ и сделать это в "одной" строке:

var tiles = Directory.GetFiles("Content/img/", ".png")
            .Select( Content.Load<Texture2D> );
01.06.2013
  • Спасибо, но это все еще не работает ... Теперь я получаю сообщение об ошибке, что плитки равны нулю, я предполагаю, что они не находят ни одного изображения? 01.06.2013
  • Вы пропустили строку var tiles = new List<Texture2D>(); ? Вы должны действительно попытаться понять, что означают все сообщения об ошибках. Это означает, что список, в который вы пытаетесь добавить изображения, не был создан - он ничего не говорит ничего о том, есть изображения или нет. 01.06.2013
  • контекст имеет значение... и это вопрос, связанный с XNA... менеджер контента никогда не будет загружать png таким образом 04.06.2013

  • 2

    Контент-менеджер в Xna работает с предварительно скомпилированными файлами xnb.

    Таким образом, вам нужно искать файлы xnb, удалять расширение и указывать путь относительно корня менеджера контента.

    var tiles = new List<Texture2D>();
    foreach (var imagePath in System.IO.Directory.GetFiles("Content/img/", ".xnb"))
    {
        var xnaPath = Path.Combine( "Content/img",
                                     Path.GetFileNameWithoutExtension(imagePath));
    
        tiles.Add( Content.Load<Texture2D>(xnaPath) );
    }
    

    если корневой папкой вашего контент-менеджера является «content», то вам следует объединить ее с папкой «img», а не с «content/img»

    04.06.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование