У меня есть игра в которой я хочу реализовать возможность смены темы игры, но для этого нужно для каждого элемента присваивать отделенный спрайт, но как лучше это сделать, как лучше сделать возможность получить доступ ко всем спрайтам? Как я понимаю, отдельный массив всех спрайтов для каждого элемента, объявленный в скрипте, будет не самым лучшим решением...
Массивы спрайтов принято паковать в специальные атласы - Sprite Atlas. Процедура "извлечения" спрайтов из атласа - SpriteAtlas.GetSprites
, дальнейший доступ к конкретным спрайтам осуществляется через индексы в обычном массиве. Это значит, что и код для получения конкретных спрайтов будет идентичен.
Учитывая эту реализацию, можно паковать UI темы в отдельные атласы и сменять эти атласы в зависимости от выбранной темы:
// Сменяемый атлас
[SerializeField]
SpriteAtlas uiAtlas;
void SetUiTheme(){
var uiSprites = new Sprite[uiAtlas.spriteCount];
uiAtlas.GetSprites(uiSprites);
// доступ к спрайтам по индексам
// uiSprites[0], uiSprites[1], и т.д.
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Можете подсказать, вот у меня есть 2 монитора и мне нужно по нажатию кнопки перенести окно WPF на другой монитор и при повторном нажатии кнопки...
Разрабатываю игру flappy bird, столкнулся с такой проблемой, что не могу прорисовать трубы(PictureBox)Написал код для прорисовки труб, создал массивы,...
Где её хранить и в каком виде? В базе данных, в отдельной строке в таблице Users?