У сучасних системах здібностей (abilities) зручніше працювати не з конкретними класами, а з інтерфейсами.
Generic Interfaces (IEffect<TTarget>) дозволяють створювати універсальні ефекти, які можна застосовувати до будь-якого типу об’єктів без дублювання коду.1️⃣ IEffect. Універсальний ефект
Визначає логіку будь-якого ефекту (шкода, лікування, бафи).
Має
Apply, Cancel і подію OnCompleted.public interface IEffect<T> {
IEffect<T> CreateInstance();
void Apply(T target);
void Cancel();
event Action<IEffect<T>> OnCompleted;
}🔹 Використання generics гарантує типобезпеку. Наприклад,
IEffect<IDamageable> можна застосувати лише до цілей, які реалізують IDamageable.2️⃣ IDamageable. Будь-який об’єкт, що може отримати шкоду
Це базовий інтерфейс для всіх «пошкоджених» об’єктів.
public interface IDamageable {
void TakeDamage(int amount);
}Будь-який клас, який реалізує цей інтерфейс, автоматично сумісний з ефектами, не змінюючи їх код.
Так,
Enemy реалізує IDamageable, тому може приймати ефекти без додаткової логіки.3️⃣ Миттєві та довготривалі ефекти
DamageEffect одразу наносить шкоду.DamageOverTimeEffect працює з таймером і завдає шкоду з інтервалом.public void Apply(IDamageable t) {
t.TakeDamage(damageAmount);
OnCompleted?.Invoke(this);
}Таймер автоматично зупиняє ефект і викликає
OnCompleted.4️⃣ Ability. Набір ефектів
[Serializable]
public class Ability {
// Список ефектів, які складають цю здібність.
// [SerializeReference] дозволяє в інспекторі Unity змішувати різні типи ефектів (DamageEffect, DamageOverTimeEffect тощо)
[SerializeReference] public List<IEffect<IDamageable>> effects = new();
// Метод виконання здібності на конкретній цілі
public void Execute(IDamageable t) {
if (t == null) return; // захист від null-цілі
foreach (var e in effects) {
// Створюємо окрему інстанцію ефекту для цього застосування,
// щоб уникнути спільного стану (таймери, currentTarget) між цілями
var instance = e.CreateInstance();
if (instance == null) continue;
// Якщо ціль — Enemy, застосовуємо через ApplyEffect,
// який відслідковує активні ефекти та підписується на OnCompleted
if (t is Enemy enemy)
enemy.ApplyEffect(instance);
else
// Інакше застосовуємо ефект без додаткового трекінгу
instance.Apply(t);
}
}
}
🔹
[SerializeReference] дозволяє змішувати різні типи ефектів прямо в інспекторі. Одна здібність може містити кілька ефектів (наприклад, удар + отрута).5️⃣ Enemy. Керування ефектами
Enemy зберігає активні ефекти й очищає їх при смерті:
void Die() {
foreach (var e in activeEffects) e.Cancel();
activeEffects.Clear();
}🔹 Подія
OnCompleted прибирає завершені ефекти.🔹
Cancel() зупиняє активні (DoT) при смерті.6️⃣ PlayerAbilityCaster. Запуск здібностей
if (Input.GetKeyDown(KeyCode.Alpha1))
Cast(hotbar[0], FindFirstObjectByType<Enemy>());
Викликає здібності з клавіш, додає
VFX/SFX і керує виконанням.(Враховуючи, що цей код лише для прикладу, то [Детальніше тут])
Якщо говорити про плюси, така система дозволяє легко додавати нові ефекти без зміни основного коду і робить їх повністю повторно використовуваними.
Вона також забезпечує чітку архітектуру, що значно спрощує підтримку та масштабування ігрової механіки.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤🔥2⚡1🥱1
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍4❤🔥3✍2
Бачили ці круті відео про шейдери? Багато з них створював Бен Кловард – один із провідних Technical Artist із понад 20-річним досвідом.
Він співтворець
ShaderFX та автор Uber Shader для Maya, останні роки активно працював над Unity Shader Graph і вів популярний YouTube-канал із 75 000 підписників.🧩 2025 рік виявився складним для технологічної та геймінг-індустрії. Microsoft, EA, PLAION, Virtuos та King проводили скорочення персоналу, і Бен потрапив під одну з хвиль.
Що цікаво: він хоче продовжити щотижневі навчальні відео на YouTube.
А якщо ваша команда шукає досвідченого Technical Artist із глибокими знаннями шейдерів і оптимізації рендерингу – пишіть Бену
Please open Telegram to view this post
VIEW IN TELEGRAM
😢18🔥3👀2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Вона дозволяє дизайнерам працювати зі звуками без коду, а програмістам через простий
API.Має фічі для плавного затухання, рандомізації, безшовних лупів і динамічних ефектів
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19⚡2👍2❤🔥1
Всім привіт 👋
📌 Ось і ваша любима рубрика: щосуботи ділимося своїми іграми, артами, скріншотами чи результатами роботи. Це може бути як концепт, так і вже готовий проєкт.
Ну що, хто покаже перший скрін?🔥
✈️ Gamedev | #ScreenshotSaturday
📌 Ось і ваша любима рубрика: щосуботи ділимося своїми іграми, артами, скріншотами чи результатами роботи. Це може бути як концепт, так і вже готовий проєкт.
Ну що, хто покаже перший скрін?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍2🥰1💯1
📌 Підсумок публікацій за тиждень:
Як завжди підсумок у одному пості! Зберігайте😁
🎓 Навчальні матеріали:
• 👀 Зроби рух свого персонажа в 10 разів плавнішим з Root Motion!
•💭 Гнучкі ефекти з C# Generic Interfaces
📰 Новини та цікаві теми:
•📱 Шейдер-гуру покидає Unity?
•🔥 Хай живе піксель: хороший приклад процедурної анімації
• 🌎 Масштабний збій AWS паралізував сервіси по всьому світу
🔨Корисне:
•🔈 Bro Audio. Просунути система керування звуком
• ☕️ Як пофіксити помилку в інспекторі!
Не забуваємо, що у першому закріпленому повідомленні є вся потрібна інформація. Що
Та також, переглядайте та діліться своїми результатами у SCREENSHOT SATURDAY!
✈️ Gamedev | [Підтримати канал тут]
Як завжди підсумок у одному пості! Зберігайте
🎓 Навчальні матеріали:
• 👀 Зроби рух свого персонажа в 10 разів плавнішим з Root Motion!
•
📰 Новини та цікаві теми:
•
•
• 🌎 Масштабний збій AWS паралізував сервіси по всьому світу
🔨Корисне:
•
• ☕️ Як пофіксити помилку в інспекторі!
Не забуваємо, що у першому закріпленому повідомленні є вся потрібна інформація. Що
# тут не просто так!Та також, переглядайте та діліться своїми результатами у SCREENSHOT SATURDAY!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥13❤4🔥3👎2
🔄 Retention у відеоіграх: що це, які норми і як його підвищити
Якщо для вас це незнайоме слово тоді варто запам'ятати: Retention — це одна з ключових метрик виживання гри.
Вона показує, наскільки добре твій проєкт утримує гравців після першого запуску. Високі значення втримання свідчать про привабливий ігровий досвід і лояльність аудиторії, тоді як низькі сигналізують про проблеми.
❓ Зазвичай дивляться такі показники:
• Day 1 Retention (R1): скільки гравців повертаються наступного дня після встановлення.
• Day 7 Retention (R7): скільки залишаються через тиждень.
• Day 30 Retention (R30): скільки залишаються через місяць.
Формула проста:
📊 А як що до середніх показників? [Джерело]
На диво, якщо говорити про основні платформи, то різниця відрізняється кардинально.
🔹 Мобільні ігри:
• D1:
• D7:
• D30:
🔸ПК / Консолі:
• D1:
• D7:
• D30:
«Хороший профіль» утримання часто позначають як
Для прикладу гіперказуальні ігри (hyper-casual) мають швидке «скасування» тоді як з іншими жанрами ситуація в перспективі набагато краща. Також регіон, Північна Америка показує одні з найкращих показників. Серед країн виділяється і Японія, цілих D30:
🤑 Вплив Retention на LTV та монетизацію.
Тут і говорити багато не потрібно, бо відповідно чим більша залученість та % утримання аудиторії - тим більший дохід. Як зазначають фахівці:
❔ Як покращити Retention?
Найняти хорошого гейм-дизайнера. А якщо трішки роз'яснити, то зробити так, щоб перший вхід гравця в гру шокував його. У хорошому сенсі😉
Далі можна було би довго і довго говорити про систему винагород, щоденні бонуси, квести, Push-повідомлення та нагадування (що до речі є хорошою ідеєю), але якщо ідея хороша не менш важливим за ці всі пункти є контент: регулярні оновлення, святкові івенти і т.п.
Більше і більше цікавого, щоб захопити увагу гравця (не занадто багато, це теж важливо).
📌 Тому, якщо хочете заробити потрібно працювати :(
✈️ Gamedev | #запитання #retention #LTV #аналітика #геймдизайн
Якщо для вас це незнайоме слово тоді варто запам'ятати: Retention — це одна з ключових метрик виживання гри.
Вона показує, наскільки добре твій проєкт утримує гравців після першого запуску. Високі значення втримання свідчать про привабливий ігровий досвід і лояльність аудиторії, тоді як низькі сигналізують про проблеми.
• Day 1 Retention (R1): скільки гравців повертаються наступного дня після встановлення.
• Day 7 Retention (R7): скільки залишаються через тиждень.
• Day 30 Retention (R30): скільки залишаються через місяць.
Формула проста:
Retention = (Кількість гравців, що повернулись / Кількість установок у день 0) × 100%
На диво, якщо говорити про основні платформи, то різниця відрізняється кардинально.
🔹 Мобільні ігри:
• D1:
~35–40%• D7:
~10–15%• D30:
~5–10%🔸ПК / Консолі:
• D1:
~50-60%• D7:
~20-30%• D30:
~10-20%«Хороший профіль» утримання часто позначають як
40 / 20 / 10 — це ціль, до якої прагнуть більшість студій. Проте ці бенчмарки залежать від жанру, платформи як вже сказано та від регіону.Для прикладу гіперказуальні ігри (hyper-casual) мають швидке «скасування» тоді як з іншими жанрами ситуація в перспективі набагато краща. Також регіон, Північна Америка показує одні з найкращих показників. Серед країн виділяється і Японія, цілих D30:
~6.4% проти ~3.7% у США. [Інфа]Тут і говорити багато не потрібно, бо відповідно чим більша залученість та % утримання аудиторії - тим більший дохід. Як зазначають фахівці:
«...високий рівень утримання збільшує LTV гравця, адже він довше взаємодіє з продуктом»
❔ Як покращити Retention?
Найняти хорошого гейм-дизайнера. А якщо трішки роз'яснити, то зробити так, щоб перший вхід гравця в гру шокував його. У хорошому сенсі
Далі можна було би довго і довго говорити про систему винагород, щоденні бонуси, квести, Push-повідомлення та нагадування (що до речі є хорошою ідеєю), але якщо ідея хороша не менш важливим за ці всі пункти є контент: регулярні оновлення, святкові івенти і т.п.
Більше і більше цікавого, щоб захопити увагу гравця (не занадто багато, це теж важливо).
📌 Тому, якщо хочете заробити потрібно працювати :(
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥12🔥2💯1
Трішки сумної статистики 😞
У 2025 році в Steam вийшло майже 13 тисяч нових ігор, але майже 40% з них не заробили навіть
Згідно аналітики Gamalytic майже дві третини заробили
У відкритій частині бази йдеться, що 47,4% продали менше ніж 100 копій, а ще 28% від 100 до 1000.
⚠️ Gamalytic зазначає, що їхні дані неповні, тож цифри можуть коливатись. Багато ігор з малою аудиторією не змогли заробити навіть мінімальні суми.
Серед них є безплатні експерименти та фан-проєкти, але загалом статистика показує масштаб “гри в нікуди”: більшість релізів виходять не заради прибутку.
Навіть зі ШІ, що здешевлює розробку, час, гроші та зусилля часто не окупаються.
❓А ви б ризикнули випустити гру в такому насиченому ринку?
✈️ Gamedev | #новини #steam #publish #ІндіРинок
У 2025 році в Steam вийшло майже 13 тисяч нових ігор, але майже 40% з них не заробили навіть
100$, що є сумою, яка дорівнює вартості публікації гри в магазині.Згідно аналітики Gamalytic майже дві третини заробили
<1000$ і лише 8% зібрали > $100 тис. Ситуація на ринку інді-ігор наступна: 30% найменш прибуткових проєктів заробили в середньому лише $37. У відкритій частині бази йдеться, що 47,4% продали менше ніж 100 копій, а ще 28% від 100 до 1000.
Серед них є безплатні експерименти та фан-проєкти, але загалом статистика показує масштаб “гри в нікуди”: більшість релізів виходять не заради прибутку.
Навіть зі ШІ, що здешевлює розробку, час, гроші та зусилля часто не окупаються.
❓А ви б ризикнули випустити гру в такому насиченому ринку?
Please open Telegram to view this post
VIEW IN TELEGRAM
😢9🔥4👀2👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥23🔥4❤2😍1
This media is not supported in your browser
VIEW IN TELEGRAM
🎯 Drag & Launch у Unity 2D: Повний гайд з кодом та механікою
Хочеш реалізувати у грі механіку “потягни й кинь”, як у Angry Birds? Давай розберемо готовий приклад.
TrajectoryAimer2D: Симулює траєкторію об’єкта з урахуванням гравітації, відскоків і тертя. Відображає її точками, щоб гравець бачив, куди полетить об’єкт перед запуском.
DragController: Керує об’єктом, відстежує натискання, драг і відпускання, і розраховує силу запуску. Викликає
🧑💻 Код (C#):
1.
1️⃣ Відстеження натискання миші
Якщо обидві умови істинні, викликається метод
2️⃣ Drag() – процес драгування
Метод
Беремо поточну позицію миші у світі та обчислюємо відстань від початку драгування. Це визначає напрямок і силу. Далі обмежуємо максимальну відстань запуску, щоб гравець не тягнув об’єкт занадто далеко.
Розраховуємо сила запуску, яка буде застосована при відпусканні. Чим далі тягнемо – тим сильніше буде кидок. Та виходячи з даних об'єкта визначаємо очікувану траєкторію.
3️⃣ DragEnd() – завершення тягнення
Метод
Також повторно розраховуємо силу та відстань, щоб застосувати точну силу з обмеженнями. Після розрахунку використовуємо імпульсну силу яка відправить об'єкт у політ:
2.
На початку скрипта ми задаємо всі параметри для симуляції та візуалізації: кількість кроків (
1️⃣ ShowTrajectory() – розрахунок і відображення траєкторії
Метод викликається з
Далі проганяємося циклом, щоб прогнозувати нову позицію на кожному кроці і перевіряємо, чи буде зіткнення з колайдером.
2️⃣ Візуалізація траєкторії – SpawnDot()
Після того як ми розрахували всі точки траєкторії, метод
Тут ми також налаштовуємо прозорість крапок, щоб вони плавно зменшувалися до кінця траєкторії, роблячи її більш наочною та зрозумілою.
📌 Повна версія коду з коментарями тут [Клац]👈
✈️ Gamedev | #уроки #DragAndLaunch #туторіал
Хочеш реалізувати у грі механіку “потягни й кинь”, як у Angry Birds? Давай розберемо готовий приклад.
TrajectoryAimer2D: Симулює траєкторію об’єкта з урахуванням гравітації, відскоків і тертя. Відображає її точками, щоб гравець бачив, куди полетить об’єкт перед запуском.
DragController: Керує об’єктом, відстежує натискання, драг і відпускання, і розраховує силу запуску. Викликає
TrajectoryAimer для показу траєкторії та застосовує імпульс при відпусканні.1.
DragController відповідає за те, щоб гравець міг тягнути об’єкт і запускати його.1️⃣ Відстеження натискання миші
if (Input.GetMouseButtonDown(0) && !isDragging)
{
DragStart();
}
Input.GetMouseButtonDown(0) перевіряє, чи натиснута ліва кнопка миші. !isDragging гарантує, що драг не почнеться, якщо об’єкт вже тягнуть.Якщо обидві умови істинні, викликається метод
DragStart(). У якому ми скидаємо швидкість та обертання об'єкта.2️⃣ Drag() – процес драгування
Метод
Drag() викликається кожного кадру в Update(), поки гравець тримає об’єкт мишею:Беремо поточну позицію миші у світі та обчислюємо відстань від початку драгування. Це визначає напрямок і силу. Далі обмежуємо максимальну відстань запуску, щоб гравець не тягнув об’єкт занадто далеко.
Vector2 currentPos = MousePosition;
Vector2 distance = dragStartPos - currentPos;
if (distance.magnitude > dragLimit)
distance = distance.normalized * dragLimit;
Розраховуємо сила запуску, яка буде застосована при відпусканні. Чим далі тягнемо – тим сильніше буде кидок. Та виходячи з даних об'єкта визначаємо очікувану траєкторію.
Vector2 initialVelocity = (Vector2)(finalForce / rb.mass);
trajectoryAimer.ShowTrajectory(rb.position, initialVelocity);
3️⃣ DragEnd() – завершення тягнення
Метод
DragEnd() викликається, коли гравець відпускає мишу після драгування.isDragging = false;
Також повторно розраховуємо силу та відстань, щоб застосувати точну силу з обмеженнями. Після розрахунку використовуємо імпульсну силу яка відправить об'єкт у політ:
rb.AddForce(finalForce, ForceMode2D.Impulse);
2.
TrajectoryAimer2D відповідає за показ траєкторії польоту враховуючи масу, швидкість і інші вхідні дані. На початку скрипта ми задаємо всі параметри для симуляції та візуалізації: кількість кроків (
maxSteps), тривалість одного кроку (timeStep), шари для перевірки колізій (collisionMask), фізичні властивості (friction, bounciness, gravityScale).1️⃣ ShowTrajectory() – розрахунок і відображення траєкторії
Метод викликається з
DragController кожного кадру під час драгування і обчислює майбутні позиції об’єкта, враховуючи гравітацію, швидкість, відскоки та тертя.Vector2 position = origin; // Початкова позиція об’єкта
Vector2 velocity = initialVelocity; // Початкова швидкість
float gravity = Physics2D.gravity.y * gravityScale; // Врахування гравітації
List<Vector2> points = new List<Vector2>(); // Список точок для візуалізації
Далі проганяємося циклом, щоб прогнозувати нову позицію на кожному кроці і перевіряємо, чи буде зіткнення з колайдером.
for (int i = 0; i < maxSteps; i++)
{
velocity += new Vector2(0, gravity) * timeStep; // Додаємо гравітацію
Vector2 nextPosition = position + velocity * timeStep; // Наступна позиція
2️⃣ Візуалізація траєкторії – SpawnDot()
Після того як ми розрахували всі точки траєкторії, метод
SpawnDot() створює маленькі об’єкти (крапки) у кожній позиції зі списку, щоб гравець бачив, куди полетить об’єкт.Тут ми також налаштовуємо прозорість крапок, щоб вони плавно зменшувалися до кінця траєкторії, роблячи її більш наочною та зрозумілою.
📌 Повна версія коду з коментарями тут [Клац]
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡7❤🔥4👍3🔥3
Unity виповнюється два десятиліття . На честь цього компанія запускає 48-годинний Unity Game Jam, який стартує 7 листопада о 19:00 за київським часом.
Учасники від соло-розробників до великих команд змагатимуться, створюючи ігри, натхненні історією рушія.
🏆 Категорії оцінювання:
• Fun Factor
• Art
• Sound Design
• Uniqueness/Creativity
• Narrative Design
А ще буде спеціальна номінація “Most Creative Use of Anniversary Assets”, переможців якої покажуть у прямому ефірі Unity Livestream.
Ну що? Хто прийме участь?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥14🔥3🎉2❤1👍1
Так, нажаль це теж потрібно оптимізовувати. Але не переживайте, буквально декілька простих порад
• Розділіть Canvas — не оновлюйте весь інтерфейс через одну дрібну зміну.
• Використовуйте Tween замість Animator — менше навантаження, плавніші анімації і так далі...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥11❤4🔥1
Всім привіт 👋
📌 Ось і ваша любима рубрика: щосуботи ділимося своїми іграми, артами, скріншотами чи результатами роботи. Це може бути як концепт, так і вже готовий проєкт.
Ну що, хто покаже перший скрін?🔥
✈️ Gamedev | #ScreenshotSaturday
📌 Ось і ваша любима рубрика: щосуботи ділимося своїми іграми, артами, скріншотами чи результатами роботи. Це може бути як концепт, так і вже готовий проєкт.
Ну що, хто покаже перший скрін?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥8🔥3🎉1
📌 Підсумок публікацій за тиждень:
Ще один тиждень пролетів. І ось підсумок!😁
🎓 Навчальні матеріали:
•😶🌫️ Фейковий туман за хвилину!
• 🎯 Drag & Launch у Unity 2D: Повний гайд з кодом та механікою
📰 Новини та цікаві теми:
• 🔄 Retention у відеоіграх: що це, які норми і як його підвищити
• Трішки сумної статистики😞
•📱 Game Jam на честь двадцятиріччя!
🔨Корисне:
•😵💫 Surface-Stable Fractal Dithering
•⚙️ Оптимізація інтерфейсу
Не забуваємо, що у першому закріпленому повідомленні є вся потрібна інформація. Що
Та також, переглядайте та діліться своїми результатами у SCREENSHOT SATURDAY!
✈️ Gamedev | [Підтримати канал тут]
Ще один тиждень пролетів. І ось підсумок!
🎓 Навчальні матеріали:
•
• 🎯 Drag & Launch у Unity 2D: Повний гайд з кодом та механікою
📰 Новини та цікаві теми:
• 🔄 Retention у відеоіграх: що це, які норми і як його підвищити
• Трішки сумної статистики
•
🔨Корисне:
•
•
Не забуваємо, що у першому закріпленому повідомленні є вся потрібна інформація. Що
# тут не просто так!Та також, переглядайте та діліться своїми результатами у SCREENSHOT SATURDAY!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥12😁3🔥2👍1
🧠 Unity Dev Tip: що таке
Нещодавно стикнувся з ситуацією: у мене був список елементів і кожен новий елемент потрібно було називати автоматично у форматі
Робити це вручну — довго і лінь, особливо, якщо таких елементів багато. Робити це в
І тут згадую про одну класну річ —
🔍 То що таке
Для прикладу:
Тепер:
➜ Додаються нові елементи у списку
➜ Самоприсвоєння
➜ без натискання Play, без ручної роботи
⚠️ Важливе зауваження
Його задача підготувати дані ДО старту гри.
Це рішення не єдине можливе, але мені воно допомогло доволі швидко😅
✈️ Gamedev | #уроки #OnValidate #UnityTips #UnityEditor #ініціалізація #редактор
OnValidate() і навіщо воно взагалі потрібне?Нещодавно стикнувся з ситуацією: у мене був список елементів і кожен новий елемент потрібно було називати автоматично у форматі
mob_1, mob_2, mob_3 …Робити це вручну — довго і лінь, особливо, якщо таких елементів багато. Робити це в
Start() або Awake() запізно, бо значення потрібні ще до запуску гри.І тут згадую про одну класну річ —
OnValidate()🔍 То що таке
OnValidate()?OnValidate() — це editor-only метод у MonoBehaviour, який автоматично викликається в редакторі, коли скрипт завантажується або значення змінюється в Inspector. БЕЗ ЗАПУСКУ ГРИ!!!Для прикладу:
public class EnemyList : MonoBehaviour
{
// 📝 Список імен ворогів, які ми будемо автозаповнювати
[SerializeField] private List<string> enemyNames = new List<string>();
#if UNITY_EDITOR // ✅ Гарантуємо, що код не потрапить у билд гри
private void OnValidate()
{
// 🔄 Проходимось по всьому списку щоразу, коли змінюється щось у інспекторі
for (int i = 0; i < enemyNames.Count; i++)
{
// ❗️ Якщо елемент порожній або null — автоматично генеруємо ім'я
if (string.IsNullOrEmpty(enemyNames[i]))
enemyNames[i] = $"mob_{i + 1}"; // 👉 mob_1, mob_2, mob_3 ...
}
}
#endif
}
Тепер:
➜ Додаються нові елементи у списку
➜ Самоприсвоєння
mob_4, mob_5, mob_6…➜ без натискання Play, без ручної роботи
OnValidate() НЕ має працювати з runtime-логікою, збереженнями, фізикою тощо.Його задача підготувати дані ДО старту гри.
Це рішення не єдине можливе, але мені воно допомогло доволі швидко
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍4❤🔥3⚡2
Інструменти для ієрархії, інспектора, дебагу, камер, організації проєкту, UI кастомізації, оптимізації та в основному для прискорення роботи!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥7👍2🔥2
Трохи перебільшення, але майже правда
Unity запустила
Unity Studio. Без Unity Hub, без інсталяцій, без public void Start(). Відкрив сайт і вже будуєш сцену.Unity Studio — це легкий онлайн-редактор, де все працює через
drag-and-drop (scratch?) і візуальні блоки логіки.Ідея проста: можна зібрати демо, walkthrough, тренувальну сцену, конфігуратор чи прототип без програмування і складного пайплайну.
Unity позиціонує його як інструмент для дизайнерів, маркетингових команд, освітніх проєктів і тих, кому "потрібен інтерактив, але не повний рушій".
Зараз це бета, і компанія відкрила реєстрацію для всіх, хто хоче залетіти першим і вплинути на розробку.
Це реально майбутнє no-code розробки чи просто "Figma для 3D"?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9🤔4👍2🤯2❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14❤🔥4✍1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤🔥4⚡1👍1
Доброго вечора, шановне панство 👋
Пропоную зіграти у ностальгію: розкажіть, яка ваша перша гра, яку ви спробували зробити, тільки починаючи свій шлях?
Для прикладу: моя перша гра була 2D top-down раннером. І так, десь у глибинах архівів досі живе дуже древній скріншот цього "шедевру"😅
А яка була ваша? На якому рушії? І чи дожила вона до хоч якогось прототипу?
Цікаво буде почути ваші історії 👇
Пропоную зіграти у ностальгію: розкажіть, яка ваша перша гра, яку ви спробували зробити, тільки починаючи свій шлях?
Для прикладу: моя перша гра була 2D top-down раннером. І так, десь у глибинах архівів досі живе дуже древній скріншот цього "шедевру"
А яка була ваша? На якому рушії? І чи дожила вона до хоч якогось прототипу?
Цікаво буде почути ваші історії 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤2😍2