Unity3d загрузить спрайт из папки текстуры


У меня есть около 200 спрайтов (jpg-картинки) в Assets>Textures>Pictures, и у меня есть GameObject с <SpriteRenderer>. Есть ли способ для меня загрузить спрайты из этой папки в этот GameObject в коде? Что-то вроде Resources.Load<Sprite>("path");

Спасибо.

3 4

3 ответа:

Поместите вашу папку в папку ресурсов. Вот так: Assets/Textures/Resources/

Тогда вы можете сделать следующее:

private Object[] textures;

void Awake()
{
    textures = Resources.LoadAll("Path");
}

Вы должны хранить их как Objects. Однако, если вы хотите использовать их позже, вы можете сделать что-то вроде этого.

texture = textures[i] as Texture;

Ну, решение таково: Resources.Load<Sprite>("path") для одного спрайта или Resources.LoadAll<Sprite>("path"), Если вы хотите загрузить их все сразу.

Чтобы использовать эти методы, вам нужно переместить ваши спрайты в подкаталог с именем "Resources", например, Assets/Textures/Pictures/Resources.

Эта и другие сведения о последствиях прохождения этого пути более подробно описаны в справочнике сценариев :

Все активы, находящиеся в папке с именем "ресурсы", могут быть доступны в любом месте папки активов. через ресурсы.Функции нагрузки. Может существовать несколько папок "ресурсы", и при загрузке объектов каждая из них будет проверена.

В Unity вы обычно не используете имена путей для доступа к активам, вместо этого вы предоставляете ссылку на актив, объявляя переменную-член, а затем назначаете ее в инспекторе. При использовании этой техники Unity может автоматически рассчитать, какие активы используются при построении игрока. Это радикально сводит размер ваших игроков к активам, которые вы на самом деле использовать в игре. При размещении ресурсов в папках " ресурсы "этого сделать нельзя, поэтому все ресурсы в папках" ресурсы " будут включены в сборку.

Поместите awesome.png в Assets/Resources/ (у вас могут быть вложенные папки) и используйте:

GetComponent<SpriteRenderer>().sprite = 
    Resources.Load<Sprite>("awesome");  // No file extension.

Http://docs.unity3d.com/ScriptReference/Resources.html

Есть также LoadAll, который "загружает все активы в папку или файл по пути в папке ресурсов."