ScriptableObject Event Channels — простой способ связать системы в Unity без жёстких зависимостей
Коротко: если нужно отправлять события между разными системами (UI, геймплей, звук) и не хочется втыкать ссылки между объектами — используйте каналы на основе ScriptableObject.
- Что это: ScriptableObject, который выступает как "канал" для события. Отправители вызывают метод Raise(), подписчики реагируют через UnityEvent или делегаты.
- Зачем: уменьшает связность, упрощает тестирование и повторное использование логики между сценами и префабами.
- Когда не использовать: если нужна мгновенная жёсткая зависимость или очень частые события (миллисекунды) — там обычные делегаты/системы ECS могут быть эффективнее.
Пример простого GameEvent:
Пример объекта-отправителя:
Пример слушателя:
Полезные советы:
- Отписывайтесь в OnDisable/OnDestroy, чтобы избежать утечек или вызовов на удалённых объектах.
- Для передачи данных используйте generic GameEvent<T> или создавайте отдельные SO с параметром.
- Храните каналы в папке Assets/Events и используйте CreateAssetMenu для быстрого создания.
- Если нужно сериализуемое логирование событий — добавьте историю внутри SO (с осторожностью по памяти).
Подробнее по ScriptableObject: Unity Manual
#Unity
Коротко: если нужно отправлять события между разными системами (UI, геймплей, звук) и не хочется втыкать ссылки между объектами — используйте каналы на основе ScriptableObject.
- Что это: ScriptableObject, который выступает как "канал" для события. Отправители вызывают метод Raise(), подписчики реагируют через UnityEvent или делегаты.
- Зачем: уменьшает связность, упрощает тестирование и повторное использование логики между сценами и префабами.
- Когда не использовать: если нужна мгновенная жёсткая зависимость или очень частые события (миллисекунды) — там обычные делегаты/системы ECS могут быть эффективнее.
Пример простого GameEvent:
using UnityEngine;
using UnityEngine.Events;
[CreateAssetMenu(fileName = "GameEvent", menuName = "Events/GameEvent")]
public class GameEvent : ScriptableObject {
public UnityEvent listeners;
public void Raise() {
listeners?.Invoke();
}
}
Пример объекта-отправителя:
using UnityEngine;
public class EventRaiser : MonoBehaviour {
public GameEvent gameEvent;
void SomeAction() {
gameEvent?.Raise();
}
}
Пример слушателя:
using UnityEngine;
using UnityEngine.Events;
public class EventListener : MonoBehaviour {
public GameEvent gameEvent;
public UnityEvent response;
void OnEnable() {
if (gameEvent != null) gameEvent.listeners.AddListener(OnEventRaised);
}
void OnDisable() {
if (gameEvent != null) gameEvent.listeners.RemoveListener(OnEventRaised);
}
void OnEventRaised() => response?.Invoke();
}
Полезные советы:
- Отписывайтесь в OnDisable/OnDestroy, чтобы избежать утечек или вызовов на удалённых объектах.
- Для передачи данных используйте generic GameEvent<T> или создавайте отдельные SO с параметром.
- Храните каналы в папке Assets/Events и используйте CreateAssetMenu для быстрого создания.
- Если нужно сериализуемое логирование событий — добавьте историю внутри SO (с осторожностью по памяти).
Подробнее по ScriptableObject: Unity Manual
#Unity
❤13👍1🔥1
У тебя возникли вопросы по Unity?
Не стесняйся - задавай их в нашем чате. Вместе мы точно найдём ответы!
Также этот чат - отличное место для обмена опытом и идей: делись своими работами, дари вдохновение и помогай другим участникам.
Удачи!
#полезно
Не стесняйся - задавай их в нашем чате. Вместе мы точно найдём ответы!
Также этот чат - отличное место для обмена опытом и идей: делись своими работами, дари вдохновение и помогай другим участникам.
Удачи!
#полезно
🤣8❤2
Unreal Engine 5: что попробовать прямо сейчас
Коротко о фичах, которые реально ускоряют работу и улучшают визуал.
- Nanite — виртуализованные микрополигональные меши. Идеально для детализованных статичных окружений; не включайте для скинированных персонажей.
- Lumen — динамическое глобальное освещение и отражения. Быстрая итерация без bakery, отлично для смены времени суток.
- World Partition — стриминг больших миров и удобная командная работа. Разбивает уровень на чанки и подгружает их по необходимости.
- Niagara — продвинутый VFX‑редактор с поддержкой GPU‑частиц. Используйте профайлер Niagara для оптимизации эффектов.
- Control Rig + Sequencer — создавать и править анимации прямо в редакторе, быстро делать кинематику и прототипы.
Совет: сначала попробуйте Nanite + Lumen на небольшом прототипе сцены — поймёте, какие ассеты стоит конвертировать и где нужен bake.
#UE5
Коротко о фичах, которые реально ускоряют работу и улучшают визуал.
- Nanite — виртуализованные микрополигональные меши. Идеально для детализованных статичных окружений; не включайте для скинированных персонажей.
- Lumen — динамическое глобальное освещение и отражения. Быстрая итерация без bakery, отлично для смены времени суток.
- World Partition — стриминг больших миров и удобная командная работа. Разбивает уровень на чанки и подгружает их по необходимости.
- Niagara — продвинутый VFX‑редактор с поддержкой GPU‑частиц. Используйте профайлер Niagara для оптимизации эффектов.
- Control Rig + Sequencer — создавать и править анимации прямо в редакторе, быстро делать кинематику и прототипы.
Совет: сначала попробуйте Nanite + Lumen на небольшом прототипе сцены — поймёте, какие ассеты стоит конвертировать и где нужен bake.
#UE5
🤣7❤1👍1
Быстрая проверка оптимизации Unity — что сделать в первую очередь
Коротко: пять простых шагов, которые часто дают заметный прирост производительности.
- Static Batching — пометь неподвижные объекты как Static, чтобы уменьшить количество draw calls.
- Occlusion Culling — включи для больших сцен, чтобы не рисовать невидимые объекты.
- Object Pooling — избегай частых Instantiate/Destroy, особенно для пулов врагов и эффектов.
- Addressables — загружай/выгружай ассеты по требованию, чтобы снизить использование памяти.
- Profiler — анализируй CPU/GPU/Memory; используй Deep Profile только для узких мест.
#Unity
Коротко: пять простых шагов, которые часто дают заметный прирост производительности.
- Static Batching — пометь неподвижные объекты как Static, чтобы уменьшить количество draw calls.
- Occlusion Culling — включи для больших сцен, чтобы не рисовать невидимые объекты.
- Object Pooling — избегай частых Instantiate/Destroy, особенно для пулов врагов и эффектов.
- Addressables — загружай/выгружай ассеты по требованию, чтобы снизить использование памяти.
- Profiler — анализируй CPU/GPU/Memory; используй Deep Profile только для узких мест.
#Unity
🤣6👍3❤1🔥1
Unity Game Dev — чтож делать чтож делать?
Коротко: первые шаги, которые помогут быстро начать и не запутаться.
- Установи Unity Hub и выбери LTS‑версию. LTS стабильнее для проектов.
- Создай/входи в Unity ID — синхронизация, лицензии и доступ к Asset Store/Cloud.
- Новый проект — выбери шаблон: 2D, 3D, URP или HDRP в зависимости от цели.
- Импортируй примеры и ассеты — несколько готовых сцен помогут понять рабочий процесс.
- Настрой версионный контроль: Git + корректный
- Смотри туториалы: начни с официальных уроков — Unity Learn и документации: Unity Documentation.
- Регулярно сохраняй и делай бекапы. Экспортируй проект в облако или делай архивацию.
Совет: начни с маленького прототипа (1–2 механики), доведи до рабочей версии — это лучше, чем большой незаконченный проект.
#Unity
Коротко: первые шаги, которые помогут быстро начать и не запутаться.
- Установи Unity Hub и выбери LTS‑версию. LTS стабильнее для проектов.
- Создай/входи в Unity ID — синхронизация, лицензии и доступ к Asset Store/Cloud.
- Новый проект — выбери шаблон: 2D, 3D, URP или HDRP в зависимости от цели.
- Освоиться с интерфейсом: открой панели Scene, Game, Hierarchy, Inspector, Project. Попробуй play/pause.
- Установи нужные пакеты: через → Package Manager добавь Cinemachine, Input System, Addressables и рендер‑пакет по необходимости.
- Импортируй примеры и ассеты — несколько готовых сцен помогут понять рабочий процесс.
- Настрой версионный контроль: Git + корректный
.gitignore для Unity (важно с самого начала). - Проверь Build Settings: выбери платформу (PC/Mobile/Web) и протестируй сборку. → Build Settings.
- Смотри туториалы: начни с официальных уроков — Unity Learn и документации: Unity Documentation.
- Регулярно сохраняй и делай бекапы. Экспортируй проект в облако или делай архивацию.
Совет: начни с маленького прототипа (1–2 механики), доведи до рабочей версии — это лучше, чем большой незаконченный проект.
#Unity
🤣10👍7❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Камера от третьего лица
В этом видеоуроке вам расскажут, как сделать и настроить камеру от третьего лица для вашего персонажа в вашей игре!
Отлично подойдёт для хоррора
#туториал
В этом видеоуроке вам расскажут, как сделать и настроить камеру от третьего лица для вашего персонажа в вашей игре!
Отлично подойдёт для хоррора
#туториал
🤯16❤11
У тебя возникли вопросы по Unity?
Не стесняйся - задавай их в нашем чате. Вместе мы точно найдём ответы!
Также этот чат - отличное место для обмена опытом и идей: делись своими работами, дари вдохновение и помогай другим участникам.
Удачи!
#полезно
Не стесняйся - задавай их в нашем чате. Вместе мы точно найдём ответы!
Также этот чат - отличное место для обмена опытом и идей: делись своими работами, дари вдохновение и помогай другим участникам.
Удачи!
#полезно