Доступ к дочерним спрайтам спрайт-листа в единстве?

У меня есть spritesheet, созданный с отдельными регионами спрайтов, названных в единстве. Я не смог узнать, как получить доступ к этим спрайтам по имени?

5 голосов | спросил chown 11 J0000006Europe/Moscow 2015, 08:46:34

1 ответ


5

Если вы загружаете свой лист спрайтов программно:

private Sprite[] Sprites;

....

Sprites = Resources.LoadAll<Sprite>("SHEET NAME");

Объект Sprite имеет свойство name, которое затем можно использовать для извлечения определенного спрайта по имени:

public Sprite GetSpriteByName(string name)
{
    for (int i = 0; i < Sprites.length; i++)
    {
        if (Sprites[i].name == name)
            return Sprites[i];
    }
}

EDIT (альтернативный метод)

Вместо этого вы можете сохранить его в коллекции словарей, что обеспечит более быстрый поиск:

private void LoadDictionary() {
    Sprite[] SpritesData = Resources.LoadAll<Sprite>("SHEET NAME");
    Sprites = new Dictionary<string, Sprite>();

    for (int i = 0; i < SpritesData.Length; i++)
    {
        Sprites.Add(SpritesData[i].name, SpritesData[i]);
    }
}

public Sprite GetSpriteByName(string name) {
    if (Sprites.ContainsKey(name))
        return Sprites[name];
    else 
        return null;
}
ответил jgallant 11 J0000006Europe/Moscow 2015, 14:01:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132