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
• Unity-разработчик — ~25%
• 3D-художник — ~20%
• Гейм-дизайнер — ~15%
Формат: Преимущественно удалено.
Уровень: Middle и Senior (Junior — редко).
Midjourney, Stable Diffusion, ChatGPT Unity РазработчикТребования: C#, ООП, Addressables, ECS/DOTS, мультиплеер, оптимизация
Зарплата Middle/Senior: 100–350 тыс. ₽ или $1500–$4500+
3D ArtistТребования: Blender/Maya, ZBrush, Substance Painter, PBR, оптимизация
Зарплата: $1500–$5000+
2D/UI ArtistТребования: Photoshop, Figma, анатомия/композиция, AI
Зарплата: $1200–$3000
Game DesignerТребования: GDD, баланс, экономика, аналитика, A/B тесты
Зарплата: $2000–$5000+
Unreal DeveloperТребования: C++, Blueprints, Gameplay, Network, Niagara
Зарплата: 150–250 тыс. ₽ или $3000–$5000
• Портфолио — обязательно. Отклики без него игнорируются.
• Риски: вакансии «на энтузиазме», за процент, с низкой зарплатой (например, $500 для 3D-художника).
• Спрос: максимальный — у Senior-разработчиков и дизайнеров в midcore-жанрах (RPG, шутеры, стратегии).
Пост был написан нейронкой, которой я скормил вакансии с нескольких тгк
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10🔥3 1
Присылайте свои работы в комментарии!👊
Лучшие выложу здесь через 24 часа!
Присылайте лучше видео. Хороший компрессор https://tools.rotato.app/compress , если не грузит используйте https://github.com/codeforreal1/compressO
Для новеньких поясняю: по сути это бесплатная реклама вашей игры и канала, только если у вас реально крутая игра)
#работыПодписчиков
🎧 Akrus Games | Unity
Лучшие выложу здесь через 24 часа!
Для новеньких поясняю: по сути это бесплатная реклама вашей игры и канала, только если у вас реально крутая игра)
#работыПодписчиков
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3 3
первое: Не игра, но всё же. Моё ядро ОС с нуля, на C и ASM. https://github.com/keldsaya/lanex
второе (модель): магазин от ПМ, разделённый на 4 части - пятка, подаватель, пружина, основа. ~570 треугольников (скрин без текстур это ДО оптимизации)
и ещё полная оружейная система. скринов нет (там только в консоль вывод и инсепктор), но есть гит - https://github.com/keldsaya/hard-weapon-system
Канал: https://t.me/keldsaya_tgk
Присылайте свои игры сюда
Akrus Games | Unity
❤8🔥2 2👍1
