Для этого урока нам потребуется спрайты (фон, два спрайта персонажа). Вы можете скачать их по ссылке.
Создаем пустой объект, добавляем на него компонент sprite Renderer и оставляем его пустым. Создаем канвас (Canvas), на нем панель, добавляем фон на панель в компонент Image. На панели создаем кнопку, настраиваем ее размер, удаляем текст с кнопки, дублируем кнопку и меняем на другой спрайт персонажа. Можем добавить текст на панель “Выбери персонажа”.

Далее создаем скрипт. Открываем и в нем объявляем две переменные:
- panelChatacter - панель выбора персонажа.
- count - какой спрайт персонажа будет.
Создаем функцию для первого персонажа CharacterOne. Если нажали на первую кнопку, то в count записываем 1.

Создаем функцию для второго персонажа CharacterTwo. Если нажали на второю кнопку, то в count записываем 2.

И как мы видели выше, идет вызов функции ResultCharacter. В ней мы проверяем, чему равен count, и подгружаем спрайт, который соответствует спрайту на кнопке, и скрываем панель.

Переходим в Юнити. В коде у нас прописано, что мы будем грузить из папки Resources, — это стандартный метод Юнити. Чтобы все работало, нам нужно создать папку Resources, в нее перемещаем спрайты персонажей. В кавычках пишем название спрайтов.
Перемещаем скрипт на персонажа и в инспектор добавляем панель.
Переходим на кнопки и в инспекторе назначаем функции. Нажимаем на плюс, в пустое окно перемещаем главного персонажа и выбираем функцию, которая подгружает нужный спрайт.

Запускаем и проверяем.
Если вы хотите научиться делать сложные многоуровневые 2D- и 3D-игры на Юнити, приходите на полный курс по Unity и С# в школу "Пиксель"! Там мы расскажем подробнее, как программировать в Юнити управление персонажем, как писать скрипт для движения персонажа, делать анимацию персонажа в Unity 2D и Unity 3D, учить его прыгать и многое другое.
Полный скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CharacterManager : MonoBehaviour
{
public GameObject panelCharacter;
public int count;
public void CharacterOne()
{
count = 1;
ResultCharacter();
}
public void CharacterTwo()
{
count = 2;
ResultCharacter();
}
public void ResultCharacter()
{
if (count == 1)
{
gameObject.GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>("superhero1");
}
if (count == 2)
{
gameObject.GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>("superhero");
}
panelCharacter.SetActive(false);
}
}