Как сделать выбор главного персонажа на Unity
Приветствую дорогие разработчики! В данной статье мы научимся выбирать нашего главного персонажа в игре. Реализовывать данный функционал мы будем на примере двух сцен: в первой сцене мы будем выбирать, за какого персонажа хотим играть, а во второй сцены запустится наша игра с тем персонажам, которого выбрали в предыдущей сцене.
И начнём мы с подготовительной части. Для начала создадим новую сцену, или переименуйте существующую, дав ей новое название Select. На этой сцене будет происходить выборка персонажа.
Далее с помощью окна Hierarchy создадим объект UI — Canvas, и настройте его как Вам удобно. Внутри канваса создайте объект UI — Panel. А внутри панели необходимо создать 3 кнопки (UI — Button — TextMeshPro):
- Кнопка "Следующий", которая будет переключать следующего персонажа, назовём кнопку ButtonRight.
- Кнопка "Предыдущий", которая будет переключать предыдущего персонажа, назовём кнопку ButtonLeft.
- Кнопка "Применить", которая будет выбирать текущего персонажа, назовём кнопку ButtonBottom.
После всех этих манипуляций у Вас в окне Hierarchy должна получится такая структура.

А на игровой сцене примерно так:

С кнопками разобрались, осталось разобраться с персонажами, которые будут отображаться на игровой сцене. Создайте префабы для всех ваших персонажей. У меня их всего 3.

Далее с помощью окна Hierarchy создайте пустой объект(Create Empty), и назовите его Characters. После чего все эти префабы перетаскиваем внутрь объекта Characters. Должно выглядеть так:

Если вы обратите внимание, то наши персонажи на игровой сцене отображаются все вместе, чего быть не должно. Нам необходимо, чтобы персонаж отображался только тот, который выбран, а все остальные были скрыты. Такую логику нам помогут реализовать наши любимые скрипты. Поэтому, создаём C# скрипт, с названием PlayerSelect, и заранее присвойте данный скрипт объекту Characters.
Впишите в скрипт следующий код:
Вкратце разберём данный код:
- В строке #6 мы создали массив characters, в котором будут храниться объекты всех персонажей. А в строке #7 в переменной index храним индекс выбранного персонажа.
- В строках #11-16 мы в массив characters заносим ссылки на все наши объекты, которые находятся внутри объекта Characters. Другими словами, в массиве characters храняться все наши персонажи.
- В строках #18-21 мы перебираем все наши объекты персонажей, и с помощью метода SetActive() делаем их неактивными. Таким образом, все наши персонажи не отображаются на игровой сцене.
- А в строке #23-26 мы с помощью того же метода SetActive() делаем активным только самый первый объект персонажа.
Отлично, далее идут методы для наших ранее созданных кнопок:
- В методе SetLeft() мы деактивируем текущий персонаж, и активируем следующий.
- В методе SetRight() мы деактивируем текущий персонаж, и активируем предыдущий.
- В методе StartScene() мы с помощью PlayerPrefs.SetInt() сохраняем в переменную SelectPlayer, индекс выбранного персонажа. Это делается для того, чтобы в следующей сцене мы могли это значение изъять, и понять, какого персонажа выбрал игрок. Ну а в следующей строке с помощью метода SceneManager.LoadScene() запускаем сцену с названием Level1.
Итак, остался последний штрих. Осталось присвоить нашим кнопкам события, чтобы при их нажатии запускались прописанные в данном скрипте методы. Для этого выберите кнопку ButtonRight, и в окне Inspector в поле On Click() перетащите объект Characters. Там же выберите PlayerSelect.SetRight.

Тоже самое проделайте и с кнопками ButtonLeft и ButtonBottom, установив для них методы PlayerSelect.SetLeft и PlayerSelect.StartScene соответственно.
Отлично, кнопки "Следующий" и "Предыдущий" работают как надо. А вот кнопка "Применить" не работает. И это не удивительно, ведь у нас нет сцены Level1. Вы можете создать её с помощью окна Project.
После создания сцены Level1, необходимо открыть вкладку File — Build Settings, и в новом открывшемся окне Build Settings перетащить наши сцены. После чего просто закройте окно.

Готово! Теперь кнопка "Применить" работает, и после её нажатия нас перенаправляет на сцену Level1. И единственное что нам осталось сделать, это создать в данной сцене именно того персонажа, которого мы выбрали в предыдущей сцене.
Для этого создадим новый скрипт c#, с названием CreatePlayer, и заранее присвойте его любому объекту, например Вашей камере. В нём впишите следующий код:
В строке #5 мы создали массив prefabsPlayer, в котором будут храниться все ваши персонажи. А в методе Start() мы сначала с помощью метода PlayerPrefs.GetInt() извлекаем индекс персонажа, которого мы выбрали, а потом с помощью метода Instantiate() создаём в игровой сцене нужного персонажа.
Осталось лишь настроить данный скрипт в окне Inspector, указав длину массива в 3, и перетащить наши префабы персонажей в поле Prefabs Player.

Важно! Префабы персонажей, которые мы использовали в первой сцене, и префабы персонажей из второй сцены, должны быть разными! Префабы персонажей из сцены Select не должны иметь лишних компонентов, через которые игрок сможет управлять этими персонажами.
На этом всё. Выбор персонажа успешно готов, и отлично работает. Если остались вопросы, пишите в комментариях. А так же буду рад Вашим лайкам.
Как сделать выбор персонажа?
У меня есть сцена в которой можно выбрать персонажа, открываются они за рекорды. К примеру у тебя рекорд времени в игре 25 секунд и тогда откроется персонаж который открывается при 25 секундах. Пока персонаж не открыт, он имеет черный цвет (типа он еще не открыт) Происходит это так
В игре это выглядит так

Мне нужно чтобы при нажатии на кнопку "Выбрать" и тогда в игре будет персонаж которого ты выбрал. К примеру я выбрал белого персонажа и в игре он появился (игра находиться на другой сцене). Объясните как это сделать?
Как сделать выбор персонажа в unity

В игре это выглядит так
Мне нужно чтобы при нажатии на кнопку «Выбрать» и тогда в игре будет персонаж которого ты выбрал. К примеру я выбрал белого персонажа и в игре он появился (игра находиться на другой сцене). Объясните как это сделать? 
Как сделать выбор персонажа в unity
Скрипт содержит достаточное количество настроек для кастомизации:
Как сделать выбор персонажа в Unity
Смотреть видео Как сделать выбор персонажа в Unity на videozubrit бесплатно
22 | 0
Пиксель — школа программирования для детей | 2 год.

Как сделать выбор персонажа в Unity? Очень быстро и просто! Смотрите это видео, мы научим вас это делать всего за 7 минут! Готовы? Погнали!
Ссылка на материалы: https://drive.google.com/drive/folders/1Gd1I184v9dBU99FPGLshmdEfZxWSlXr8?usp=sharing
Unity 3D — платформа для разработки 2D и 3D-игр и приложений в реальном времени, написанная на языке программирования C#. Благодаря Unity 3D мы можем взглянуть на игры глазами инженера-разработчика, научиться моделировать и анимировать объекты, создавать дизайн уровней и интерфейсов.
Понравилось видео – ставьте лайк и подписывайтесь на канал: https://www.youtube.com/channel/UCenaLQKkLwAUmxmwzV8fJjg?sub_confirmation=1
Хотите регулярно изучать новые уроки? Жмите на колокольчик, чтобы получать уведомления о новых видео!
Нужен наставник? Записывайтесь на онлайн-уроки программирования в школе «Пиксель»:
Наш сайт: https: https://clck.ru/XGAYC
Курс по программированию по Unity 3D: https://clck.ru/XGAWG
Инстаграм: https://www.instagram.com/clubpixel.ru
Вконтакте: https://vk.com/clubpixel_ru
ТикТок: https://www.tiktok.com/@clubpixel.ru
Телеграм: https://t.me/pixelstudy
Подписывайтесь на канал, пишите в комментариях, какие уроки по Unity вы хотели бы посмотреть!