Доброе утро, разработчики!
Всем удачной рабочей недели!🎉
Всем удачной рабочей недели!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16🔥3 2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12 6🔥4
6 дней в неделю на основной работе. Дома — жена и маленькая дочка. А по вечерам я открываю Unity и делаю тактическую стратегию
Геймджемы, проекты в стол, а через полгода — диплом геймдизайнера. Опыт есть. Выпущенной игры — нет. Классика жанра, знакомо? Решил наконец это исправить💪
📝 Месяц работы. Система строительства, производство ресурсов, чеканка монет, управление игровым временем. Весь код с нуля, без готовых решений. Визуально пока кубики — но если прищуриться, уже почти видно игру😁
Иногда сижу до трёх ночи и сплю четыре часа. Потом прихожу на работу, смотрю на монитор и понимаю — так я не доживу до релиза. Одёргиваю себя, отдыхаю с семьёй и ищу баланс🌈
Веду канал, где всё это в реальном времени: решения, ошибки, прогресс и честные мысли о том, каково это — пилить игру, когда свободного времени почти нет.
➡️ Следи за процессом в Telegram @littlegamedev — а совсем скоро будет и видеоформат на YouTube👈
Геймджемы, проекты в стол, а через полгода — диплом геймдизайнера. Опыт есть. Выпущенной игры — нет. Классика жанра, знакомо? Решил наконец это исправить
Иногда сижу до трёх ночи и сплю четыре часа. Потом прихожу на работу, смотрю на монитор и понимаю — так я не доживу до релиза. Одёргиваю себя, отдыхаю с семьёй и ищу баланс
Веду канал, где всё это в реальном времени: решения, ошибки, прогресс и честные мысли о том, каково это — пилить игру, когда свободного времени почти нет.
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Little Gamedev
Инди-разработчик на Unity
Все говорят "просто возьми и сделай игру". Никто не говорит, что будет, когда ты при этом работаешь фулл-тайм и укладываешь ребёнка спать. Я показываю эту версию геймдева - настоящую.
Сотрудничество:
@Maxim_Zemcov
Все говорят "просто возьми и сделай игру". Никто не говорит, что будет, когда ты при этом работаешь фулл-тайм и укладываешь ребёнка спать. Я показываю эту версию геймдева - настоящую.
Сотрудничество:
@Maxim_Zemcov
20❤7👍2🔥1
Вчера каналу исполнилось 1 год🎉
Спасибо, что вы со мной!
👍 - лайк, если вы в канале уже год
За этот год:🟢 Мы набрали 2000 подписчиков🟢 Админы написали 914 постов🟢 Я потратил ~1500 рублей(тратил только на геймджем)🟢 Я заработалхорошая попытка, налоговая служба 🟢 Было проведено 4 розыгрыша🟢 И создано ~4 папки каналов
Спасибо, что вы со мной!
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤21👍9 1
Forwarded from NOBICE (Random Beast 🏆)
🎉 Розыгрыш завершен!
🏆 Победители:
1. @sozdal_chipsi
2. @Aleksandr_Kostylevich
3. @Fylht009
4. @tikakalia
5. @hentaibeatsproduction
🔍 Проверить результаты
🏆 Победители:
1. @sozdal_chipsi
2. @Aleksandr_Kostylevich
3. @Fylht009
4. @tikakalia
5. @hentaibeatsproduction
🔍 Проверить результаты
❤12🤯1
Что-то тг не заблокировали, хотя у меня сломались пару прокси.
Это были как обычно новости "могут заблокировать". А могут и не заблокировать🤷♂️ 🤷♂️ 🤷♂️
А что у вас произошло после "блокировки" тг? Напишите в комментариях!
Сегодня первое апреля, значит канал будет называть "акукуруз | Нет unity"
Это были как обычно новости "могут заблокировать". А могут и не заблокировать
А что у вас произошло после "блокировки" тг? Напишите в комментариях!
Сегодня первое апреля, значит канал будет называть "акукуруз | Нет unity"
Please open Telegram to view this post
VIEW IN TELEGRAM
Соискателей в 11,4 раза больше, чем вакансий. 🪑
Если посмотреть только IT, то там цифра 22,9 раза
Причина: много IT-специалистов и мало IT-вакансий, но много заводских предложений.С высокими зарплатами 🤡
Идите на завод!
Если посмотреть только IT, то там цифра 22,9 раза
Причина: много IT-специалистов и мало IT-вакансий, но много заводских предложений.
Идите на завод!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👎7🤯5❤4🔥2😱2👍1 1
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Подсветка объектов при наведении
Хочешь, чтобы игрок видел, на что можно кликнуть? Базовый, но важный приём.
Через Outline (красиво и профессионально)
Либо берём готовый ассет Quick Outline из Asset Store (бесплатный).
Ставим на объект скрипт, который включает/выключает компонент Outline при Raycast-попадании.
Скрипт OutCube для объекта:
Скрипт MouseOut для наведения мыши(необязательный, только для примера)
Что важно:
- Outline эффект работает поверх всего и не ломает текстуры.
- Можно настроить цвет (красный для врагов, зелёный для союзников).
- Не требует замены материала — значит, работает с любыми шейдерами.
Результат: игра сразу становится отзывчивее. Игрок понимает, с чем можно взаимодействовать, а UI не нужен.
💬 А ты как делаешь подсветку? Юзаешь ассеты или костылишь вручную?
🔔 Подпишись, дальше будет много про шейдеры, эффекты и оптимизацию в инди-разработке.
👉 Akrus Games | Unity
Хочешь, чтобы игрок видел, на что можно кликнуть? Базовый, но важный приём.
Через Outline (красиво и профессионально)
Либо берём готовый ассет Quick Outline из Asset Store (бесплатный).
Ставим на объект скрипт, который включает/выключает компонент Outline при Raycast-попадании.
Скрипт OutCube для объекта:
using UnityEngine;
// Этот класс отвечает за управление подсветкой (Outline) объекта
public class OutCube : MonoBehaviour
{
// Ссылка на компонент Outline, который создает подсветку вокруг объекта
public Outline _outline;
private void Start()
{
// Проверяем, есть ли у нас компонент Outline (не равен ли null)
if (_outline != null)
{
// Отключаем подсветку при старте игры, чтобы объект не светился сразу
_outline.enabled = false;
}
}
// Этот метод включает или выключает подсветку объекта
// state - параметр, который получает метод: true = включить, false = выключить
public void ToggleOutline(bool state)
{
if (_outline != null)
{
_outline.enabled = state;
}
}
}
Скрипт MouseOut для наведения мыши(необязательный, только для примера)
using UnityEngine;
public class MouseOut : MonoBehaviour
{
// Хранит информацию о последнем подсвеченном объекте
private OutCube _currentCube;
void Update()
{
// Создаем луч из камеры через позицию мыши на экране
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
// Рисуем желтый луч в сцене для визуализации (видно только в режиме Scene)
Debug.DrawRay(ray.origin, ray.direction * 100f, Color.yellow);
// Physics.Raycast - пускаем луч и проверяем, во что он попал
if (Physics.Raycast(ray, out RaycastHit hit))
{
// Рисуем зеленый луч до точки попадания
Debug.DrawRay(ray.origin, ray.direction * hit.distance, Color.green);
// Пытаемся получить компонент OutCube с объекта, в который попал луч
OutCube cube = hit.collider.GetComponent<OutCube>();
// Проверяем: если на объекте есть компонент OutCube И это не тот же куб, на который мы уже смотрели
if (cube != null && cube != _currentCube)
{
// ?. - это безопасный вызов: если _currentCube не null, то вызываем метод
_currentCube?.ToggleOutline(false);
_currentCube = cube;
// Включаем подсветку у нового куба
_currentCube.ToggleOutline(true);
}
// Если луч попал в объект без компонента OutCube, но у нас был запомнен предыдущий куб
else if (cube == null && _currentCube != null)
{
// Выключаем подсветку у предыдущего куба
_currentCube.ToggleOutline(false);
// Забываем про предыдущий куб (теперь ни на что не наведены)
_currentCube = null;
}
}
// Если луч вообще ни во что не попал, но у нас был запомнен подсвеченный куб
else if (_currentCube != null)
{
// Выключаем подсветку у последнего куба
_currentCube.ToggleOutline(false);
// Забываем про него
_currentCube = null;
}
}
}
Что важно:
- Outline эффект работает поверх всего и не ломает текстуры.
- Можно настроить цвет (красный для врагов, зелёный для союзников).
- Не требует замены материала — значит, работает с любыми шейдерами.
Результат: игра сразу становится отзывчивее. Игрок понимает, с чем можно взаимодействовать, а UI не нужен.
💬 А ты как делаешь подсветку? Юзаешь ассеты или костылишь вручную?
🔔 Подпишись, дальше будет много про шейдеры, эффекты и оптимизацию в инди-разработке.
👉 Akrus Games | Unity
❤8👍4🔥3😁2🤯1🎄1
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6 3👍2👎1
Хотите ли вы все также видеть обучающие посты? Или они уже потеряли актуальность?
Anonymous Poll
83%
Хочу видеть обучающие посты
17%
Не хочу видеть обучающие посты
❤6 2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👎12😱6😁3❤2
Как создавать собственные классы и наследовать их в C# Unity
Классы — это шаблоны для объектов. Наследование помогает экономить время.
Представь, что ты строишь домики из кубиков. Класс — это набор инструкций, как сложить кубики. Наследование — когда ты берёшь готовый домик и добавляешь к нему крышу или окно, не перестраивая всё заново. В Unity так можно делать с объектами: взять базовый класс (например, «Персонаж») и создать на его основе «Воина» или «Мага», добавив особые умения.
Шаг 1. Создаём базовый класс
Открой Unity, создай новый C#‑скрипт (через контекстное меню в Assets → Create → C# Script). Назови его, например,
Отредактируй скрипт:
Что тут есть:
-
-
-
Шаг 2. Создаём класс‑наследник
Создай ещё один скрипт, назови его
Отредактируй скрипт:
Что изменилось:
-
-
-
Шаг 3. Проверяем в Unity
1. Создай пустой GameObject на сцене (правый клик в иерархии → Create Empty).
2. Прицепи к нему скрипт
3. Запусти игру и посмотри в Console — при вызове
Важные моменты
Наследуй, чтобы не писать код заново.
Классы — это шаблоны для объектов. Наследование помогает экономить время.
Представь, что ты строишь домики из кубиков. Класс — это набор инструкций, как сложить кубики. Наследование — когда ты берёшь готовый домик и добавляешь к нему крышу или окно, не перестраивая всё заново. В Unity так можно делать с объектами: взять базовый класс (например, «Персонаж») и создать на его основе «Воина» или «Мага», добавив особые умения.
Шаг 1. Создаём базовый класс
Открой Unity, создай новый C#‑скрипт (через контекстное меню в Assets → Create → C# Script). Назови его, например,
Character.Отредактируй скрипт:
using UnityEngine;
public class Character : MonoBehaviour
{
public int health = 100;
public float speed = 5f;
public virtual void TakeDamage(int damage)
{
health -= damage;
Debug.Log("Урон получен! Здоровье: " + health);
}
}
Что тут есть:
-
public int health = 100 — здоровье персонажа (число).-
public float speed = 5f — скорость движения (дробное число).-
TakeDamage — метод, который уменьшает здоровье при получении урона.Шаг 2. Создаём класс‑наследник
Создай ещё один скрипт, назови его
Warrior.Отредактируй скрипт:
using UnityEngine;
public class Warrior : Character
{
public int shield = 20;
public override void TakeDamage(int damage)
{
int finalDamage = damage - shield;
if (finalDamage > 0)
{
health -= finalDamage;
}
Debug.Log("Воин получил урон! Здоровье: " + health + ", щит: " + shield);
}
}
Что изменилось:
-
public class Warrior : Character — говорим, что Warrior наследует Character.-
public int shield = 20 — добавили щит (новое свойство).-
override void TakeDamage — переопределили метод, чтобы учитывать щит.Шаг 3. Проверяем в Unity
1. Создай пустой GameObject на сцене (правый клик в иерархии → Create Empty).
2. Прицепи к нему скрипт
Warrior (перетащи скрипт на объект в инспекторе).3. Запусти игру и посмотри в Console — при вызове
TakeDamage ты увидишь логи с учётом щита.Важные моменты
Наследуй, чтобы не писать код заново.
❤10👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Стандартный
SceneManager.LoadScene вызывает фриз — не годится для нормального проекта. Сделаем правильно: с экраном загрузки, прогрессом и без тормозов.
Пока сцена грузится, крутим анимацию и показываем проценты.
1. Создай пустые объекты Menu и Load, меню и экран загрузки соответственно.
2. Прикрепи к ним необходимый UI
Кнопка должна запускать
LoadScene()using System.Collections;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Play : MonoBehaviour
{
[Header("UI Elements")]
[SerializeField] private Slider progressSlider;
[SerializeField] private TextMeshProUGUI progressText;
[SerializeField] private GameObject start;
[SerializeField] private GameObject load;
// Обновляет слайдер и текст прогресса
void UpdateProgressUI(float progress)
{
progressSlider.value = progress;
progressText.text = $"{progress * 100:F0}%";
}
// Вызывается при нажатии кнопки "Играть"
public void LoadScene()
{
start.SetActive(false);
load.SetActive(true);
StartCoroutine(LoadAsync(1));
}
// Асинхронная загрузка сцены с отображением прогресса
IEnumerator LoadAsync(int sceneName)
{
AsyncOperation operation = SceneManager.LoadSceneAsync(sceneName);
operation.allowSceneActivation = false; // не переключаемся сразу
// Ждём, пока загрузка не достигнет 90%
while (operation.progress < 0.9f)
{
float progress = Mathf.Clamp01(operation.progress / 0.9f);
UpdateProgressUI(progress);
yield return null;
}
// Достигли 90% — показываем 100% и делаем паузу
UpdateProgressUI(1f);
yield return new WaitForSeconds(0.5f); // можно заменить на ожидание нажатия
// Разрешаем переход на новую сцену
operation.allowSceneActivation = true;
}
}
operation.progress идёт до 0.9, а последние 10% — активация сцены. Поэтому масштабируем
progress / 0.9f и уже на 1.0 переводим.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍5❤2 2
ИИ
Если бы не было чатагпт, не было таких цен на оперативную память, скорость работы программирования не возросла, не было бы этого канала.
Большинство из вас использует ИИ. Я в том числе.
Однако у ИИ есть проблема — он любит фантазировать, очень много фантазировать. Чтобы этого избежать, нужна правильная структура запроса.
Вот вам полезный промт, который убирает лишнюю "фантазию" ИИ:
Чтобы составить свой промт, надо:
Используя эти 4 пункта и промт, можно достать максимум из ИИ
Если бы не было чатагпт, не было таких цен на оперативную память, скорость работы программирования не возросла, не было бы этого канала.
Большинство из вас использует ИИ. Я в том числе.
Однако у ИИ есть проблема — он любит фантазировать, очень много фантазировать. Чтобы этого избежать, нужна правильная структура запроса.
Вот вам полезный промт, который убирает лишнюю "фантазию" ИИ:
Прежде чем дать мне ответ, оцени его
неопределённость. Если она больше, чем 0.1 — задавай
мне уточняющие вопросы до тех пор, пока
неопределённость будет 0.1 или меньше
Чтобы составить свой промт, надо:
1. Объяснить что ты делаешь
2. Что ты уже сделал
3. Объяснить, что должен сделать ИИ
4. Добавить примеры по возможности.
Используя эти 4 пункта и промт, можно достать максимум из ИИ
❤10🔥1 1
