TGViewer
Red Atom Red Atom @unitygamelab · 204 subscribers
Post #54 88
ScriptableObjects: Создание глоссария - часть 3

Это завершающий пост цикла и в нём мы рассмотрим создание управляющего скрипта, который будет управлять отображением нужной информации.

🛠Проектирование
Прежде чем приступать к написанию скрипта, нужно определиться с задачами, которые он должен решать. Какого функционала мы ожидаем от нашего глоссария? Для такой системы можно придумать множество дополнительных фич, таких как: звуковой эффект при выборе, подсветка выбранной кнопки, изменение её размера, анимации и так далее. В нашем случае мы обойдёмся самым простым вариантом - изменение содержимого текстовых полей при нажатии на кнопки. Для этого будет достаточно одного скрипта, который будет содержать ссылки на нужные текстовые поля и публичный метод для вывода информации о враге. Давайте перейдём к реализации скрипта

🧑‍💻Код
using TMPro;
using UnityEngine;

public class GlossaryInfoShowController : MonoBehaviour
{
[SerializeField] private TextMeshProUGUI _enemyName;
[SerializeField] private TextMeshProUGUI _hp;
[SerializeField] private TextMeshProUGUI _damage;


public void ShowEnemyInfo(Enemy enemyConfig)
{
_enemyName.text = enemyConfig.enemyName;
_hp.text = enemyConfig.hp.ToString();
_damage.text = enemyConfig.damage.ToString();
}

}


Это весь код, необходимый для работы нашего глоссария. Мы используем обычный MonoBehaviour, в котором определяем три приватных поля. Благодаря модификатору [SerializeField] мы сможем указать ссылки через инспектор несмотря на приватность. Именно эти поля будет менять скрипт внутри своего публичного метода ShowEnemyInfo(). Как видно из кода, метод принимает один аргумент как раз того типа, который мы создавали в первом посте для хранения конфигов о противнике. Теперь всё готово и осталось добавить скрипт на сцену

⚙️Настройка
Скрипт можно установить на любой объект в сцене, главное это установить в нём ссылки на нужные текстовые объекты, которые и будут отображать соответствующие значения. После этого остаётся лишь добавить на каждую кнопку событие, в которое мы установим ссылку на объект с нашим скриптом и вызовем созданный нами метод, передав ему тот конфиг врага, который должна представлять кнопка.

✍🏻Итог
Теперь у нас есть полностью рабочая система глоссария, отображающая информацию о любом враге, которого мы выберем. Для масштабирования подобной системы достаточно лишь создать ещё больше конфигов и добавить больше кнопок!
More from @unitygamelab
  1. Sep 19, 2026Эксперименты Начал экспериментировать с постпроцессингом в URP и написал свой первый шейде…
  2. Sep 12, 2026Закончил все комнаты Закончил, конечно, громко сказано, но по локации уже можно пройтись о…
  3. Sep 5, 2026Добавил ещё две новых комнаты и и осталось всего 6 В главном хабе пришлось потратить много…
  4. Aug 29, 2026ЕЩЁ две комнаты Теперь есть ещё и склад с комнатой управления складом. Расставил свет от б…
  5. Aug 22, 2026Ещё две комнаты Добавил на локацию помещение охраны(небольшая комнатка) и распределительны…
  6. Aug 15, 2026Комната с лифтом Закончил комнату с лифтом - теперь в локации есть два помещения. Очень хо…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →