TGViewer
Red Atom Red Atom @unitygamelab · 204 subscribers
Post #48 62
🎮 ScriptableObjects в Unity

ScriptableObject (SO) — это мощный инструмент для хранения данных и логики вне GameObject.

Идеально для: настроек персонажей, информации о предметах, диалогов и любых конфигов!

🔥 Зачем использовать?
✔️ Экономия памяти – один SO может использоваться тысячами объектов
✔️ Гибкость – изменение данных без правки кода
✔️ Интеграция с Inspector – настройки как у компонентов

🛠 Основы создания
Скрипт:
using UnityEngine;

[CreateAssetMenu(fileName = "NewCharacter", menuName = "Characters/CharacterData")]
public class CharacterData : ScriptableObject {
public string characterName;
public int maxHealth;
public float moveSpeed;
}


Для создания ScriptableObject важно наследовать класс от ScriptableObject и использовать модификатор [CreateAssetMenu], указав название для создаваемых SO и положение объекта во всплывающем меню.

Создание ассета:
ПКМ в Project → Create → Characters → CharacterData

Заполните параметры в инспекторе

💡 Пример: Базовая система персонажей
1. Данные персонажа (SO)
using UnityEngine;

[CreateAssetMenu(fileName = "NewCharacter", menuName = "Characters/CharacterData")]
public class CharacterData : ScriptableObject {
public string characterName;
public int maxHealth;
public float moveSpeed;
}


2. Использование в скрипте
// PlayerController.cs
public class PlayerController : MonoBehaviour {
public CharacterData data; // Перетащите сюда SO

private int currentHealth;

void Start() {
currentHealth = data.maxHealth;
}

void Update() {
float move = Input.GetAxis("Horizontal") * data.moveSpeed;
transform.Translate(move * Time.deltaTime, 0, 0);
}
}


3. Преимущества подхода
- Можно создать разные вариации персонажей (игрок, враг, NPC) без дублирования кода - достаточно установить новый конфиг для изменения настроек персонажа.
- Баланс игры меняется без пересборки – просто редактируем SO
- Данные можно переиспользовать (например, несколько врагов с одними параметрами)

📊 Когда выбирать ScriptableObject?
1. Настройки персонажей/врагов — ✅ Идеально
2. Система диалогов/квестов — ✅ Отлично

Используя эти знания можно создавать множество конфигов с разными предустановками, чтобы в дальнейшем легко менять настройки объекта установив подходящий конфиг. Так же, это позволяет управлять настройками множества объектов, имеющих один и тот же конфиг - например, если у вас есть множество врагов одного типа и все они имеют один и тот же конфиг, то для изменения их поведения достаточно изменить данные установленного конфига.

Вдальнейшем мы напишем небольшой глоссарий, описывающий информацию о различных противниках. Ждите – следующий пост совсем скоро!
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 →