Unity атлас, смена интерфейса, Не смена окон, интерфейс кнопкок и окон
Валек Журавлев
Гуру
(3312),
на голосовании
5 месяцев назад
Я даже нейронку спрашивал пишет фигню. 2д игра.
Короче есть atlas 1 и altas 2. В атласе 1 = все объекты с меню В атласе 2 = все объекты с меню, но с другим дизаном.
Грубо говоря при нажатии на кнопку менять дизайн всех кнопок и панелей, на те что в атласе 2. Прям все. Если атласе 1 = 10 кнопок, то в атласе 2 тоже 10 кнонок. И названия тоже одинаковые, разный только пут и дизайн.
Вот как по кнопке поменять дизайн кнопок?
Я устал гуглить, в годот просто атлас меняешь и все, а тут нет. Не менять же мне по одной кнопке?
В один пустой gameobject объединить все кнопки одного стиля, затем в другой пустой gameobject объединить все кнопки другого стиля. А из когда переключать состояние этих двух gameobject'ов
В Unity для смены атласа спрайтов всех элементов интерфейса можно использовать скрипт, который будет проходить по всем кнопкам и панелям и менять их спрайты. В данном случае, мы можем создать структуру, в которой будем хранить соответствие между спрайтами из атласа 1 и атласа 2, и по нажатию на кнопку менять спрайты всех элементов.
Предположим, у нас есть два атласа с одинаковыми именами спрайтов, но разными путями. Мы будем использовать словарь для хранения соответствий.
как можно это реализовать:
Создайте словарь для хранения спрайтов из обоих атласов.
Напишите метод, который будет проходить по всем кнопкам и панелям и заменять их спрайты на спрайты из другого атласа.
Добавьте кнопку, которая будет вызывать этот метод для смены интерфейса. код на C# для Unity:
using UnityEngine; using UnityEngine.UI; using System.Collections.Generic;
public class UIAtlasSwitcher : MonoBehaviour { public SpriteAtlas atlas1; public SpriteAtlas atlas2; private Dictionary spriteMap1 = new Dictionary(); private Dictionary spriteMap2 = new Dictionary(); private bool isAtlas1Active = true;
Чтобы это работало, убедитесь, что у вас настроены атласы и в них спрайты имеют одинаковые имена.
Шаги по настройке: Создайте два атласа и добавьте в них соответствующие спрайты. В редакторе Unity добавьте этот скрипт на любой GameObject. В инспекторе добавьте ссылки на ваши атласы в поля atlas1 и atlas2. Добавьте кнопку на сцену и назначьте метод SwitchAtlas на её событие OnClick. Теперь, при нажатии на эту кнопку, дизайн всех кнопок и панелей будет меняться между двумя атласами.
Короче есть atlas 1 и altas 2.
В атласе 1 = все объекты с меню
В атласе 2 = все объекты с меню, но с другим дизаном.
Грубо говоря при нажатии на кнопку менять дизайн всех кнопок и панелей, на те что в атласе 2. Прям все. Если атласе 1 = 10 кнопок, то в атласе 2 тоже 10 кнонок. И названия тоже одинаковые, разный только пут и дизайн.
Вот как по кнопке поменять дизайн кнопок?
Я устал гуглить, в годот просто атлас меняешь и все, а тут нет. Не менять же мне по одной кнопке?